Skip to content

Need for improvement in error Handling Across the Project #17

@Keshav-poha

Description

@Keshav-poha

Current Problems:
Missing null/undefined checks
Code assumes API responses are always well-formed
Users see technical errors or blank screens
One error breaks entire features

Here are examples of problematic code lines that fit each category:

Missing null/undefined checks

// script.js:L157-L159
if (data.results.length === 0) {
    showError('No results found for the given query.');
    return;

Issue: data.results could be undefined if API returns unexpected structure

// script.js:L293-L295
nodes.forEach(node => {
    const label = node.properties.name || node.properties.asn || node.id;
    const type = node.labels[0];

Issue: node.properties and node.labels could be undefined/empty

// script.js:L394-L396
relationships.forEach(rel => {
    const row = tbody.insertRow();
    row.insertCell(0).textContent = rel.type;

Issue: rel.type could be undefined

Code assumes API responses are always well-formed

// script.js:L161-L163
const nodes = data.results.flatMap(result => result.nodes);
const relationships = data.results.flatMap(result => result.relationships);
storeData(nodes, relationships);

Issue: Assumes result.nodes and result.relationships always exist

// script.js:L466-L468
.then(response => response.json())
.then(data => {
    const newNodes = data.results.flatMap(result => result.nodes);

Issue: No validation that response contains expected structure

// script.js:L207-L209
function storeData(nodes, relationships) {
    nodes.forEach(node => {
        if (!allNodes.has(node.id)) {

Issue: Assumes node.id always exists

Users see technical errors or blank screens

// script.js:L511-L513
.catch(error => {
    console.error('Error expanding node:', error);
    showError('Failed to expand node: ' + error.message);

Issue: Shows raw error.message to users (technical details)

// script.js:L488-L490
.catch(error => {
    console.error('Error fetching data:', error);
    showError('Failed to fetch data: ' + error.message);

Issue: Technical error message exposed to users

One error breaks entire features

// script.js:L293-L300
nodes.forEach(node => {
    const label = node.properties.name || node.properties.asn || node.id;
    const type = node.labels[0];
    if (selectedNodeTypes.size === 0 || selectedNodeTypes.has(type)) {
        const nodeElement = svg.append('circle')
            .attr('r', 10)
            .attr('fill', getNodeColor(type))
            .attr('stroke', '#fff')

Issue: If one node has malformed data, the entire forEach fails and no graph renders

// script.js:L161-L166
const nodes = data.results.flatMap(result => result.nodes);
const relationships = data.results.flatMap(result => result.relationships);
storeData(nodes, relationships);
renderGraph();
renderTable();

Issue: If storeData() throws error, both renderGraph() and renderTable() never execute

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions