JavaScript Error Reference

JavaScript பிழை பொருள் மற்றும் அதன் பண்புகளைக் கற்றுக்கொள்ளுங்கள்

Error பொருள்

JavaScript ஒரு உள்ளமைக்கப்பட்ட பிழை பொருளைக் கொண்டுள்ளது, இது பிழை ஏற்படும் போது பிழைத் தகவலை வழங்குகிறது.

பிழை பொருள் இரண்டு பயனுள்ள பண்புகளை வழங்குகிறது: name மற்றும் message.

🔧 Error Object உருவாக்கம்:

JavaScript தானாகவே Error பொருளை உருவாக்குகிறது, அல்லது நீங்கள் new Error() மூலம் ஒரு புதிய Error பொருளை உருவாக்கலாம்:

// JavaScript தானாக உருவாக்குகிறது
try {
  let x = y;  // ReferenceError
} catch(err) {
  console.log(err.name);     // "ReferenceError"
  console.log(err.message);  // "y is not defined"
}

// நீங்கள் உருவாக்கலாம்
let customError = new Error("Custom error message");
console.log(customError.name);     // "Error"
console.log(customError.message);  // "Custom error message"

Error Object பண்புகள்

பண்பு விளக்கம்
name பிழைப் பெயரை அமைக்கிறது அல்லது வழங்குகிறது
message பிழைச் செய்தியை அமைக்கிறது அல்லது வழங்குகிறது (ஒரு சரம்)

எடுத்துக்காட்டு:

try {
  // ஒரு ReferenceError ஐ உருவாக்குவோம்
  let x = undefinedVariable;
} catch(error) {
  console.log("Error name:", error.name);        // "ReferenceError"
  console.log("Error message:", error.message);  // "undefinedVariable is not defined"
  console.log("Full error:", error);             // முழு Error பொருள்
}

Error Names

பிழைப் பெயர் பண்பு ஆறு வெவ்வேறு மதிப்புகளை வழங்கலாம்:

பிழை பெயர் விளக்கம் முயற்சிக்க
EvalError காலாவதியானது - அதற்குப் பதிலாக SyntaxError ஐப் பயன்படுத்தவும்
RangeError ஒரு எண் "வரம்பிற்கு வெளியே" நடந்துள்ளது
ReferenceError சட்டவிரோத குறிப்பு நடந்துள்ளது
SyntaxError தொடரியல் பிழை நடந்துள்ளது
TypeError வகைப் பிழை நடந்துள்ளது
URIError encodeURI() இல் பிழை நடந்துள்ளது

ஒவ்வொரு பிழை வகைக்கான எடுத்துக்காட்டுகள்:

RangeError

// தவறான வரிசை நீளம்
try {
  let arr = new Array(-1);
} catch(err) {
  console.log(err.name);    // "RangeError"
  console.log(err.message); // "Invalid array length"
}

ReferenceError

// வரையறுக்கப்படாத மாறி
try {
  let x = undefinedVariable;
} catch(err) {
  console.log(err.name);    // "ReferenceError"
  console.log(err.message); // "undefinedVariable is not defined"
}

TypeError

// தவறான வகை செயல்பாடு
try {
  let num = 5;
  num.toUpperCase();
} catch(err) {
  console.log(err.name);    // "TypeError"
  console.log(err.message); // "num.toUpperCase is not a function"
}

URIError

// தவறான URI
try {
  decodeURI("%%%");
} catch(err) {
  console.log(err.name);    // "URIError"
  console.log(err.message); // "URI malformed"
}

🔍 SyntaxError குறிப்பு:

SyntaxError விதிவிலக்குகள் try...catch மூலம் பிடிக்க முடியாது, ஏனெனில் அவை குறியீடு பாகுபடுத்தப்படுவதற்கு முன்பே நிகழ்கின்றன:

// இது பிழையை வீசாது - குறியீடு இயக்கப்படுவதற்கு முன்பே தோல்வியடைகிறது
try {
  let x = "unclosed string;
} catch(err) {
  // இந்த குறியீடு ஒருபோதும் இயங்காது
  console.log("Caught:", err);
}

தனிப்பயன் பிழை பொருள்கள்

நீங்கள் உங்கள் சொந்த பிழை வகைகளை உருவாக்கலாம்:

// அடிப்படை தனிப்பயன் பிழை
class ValidationError extends Error {
  constructor(message) {
    super(message);
    this.name = "ValidationError";
    this.timestamp = new Date().toISOString();
  }
}

// பயன்பாடு
try {
  let age = 15;
  if (age < 18) {
    throw new ValidationError("User must be at least 18 years old");
  }
} catch(err) {
  if (err instanceof ValidationError) {
    console.log(err.name);       // "ValidationError"
    console.log(err.message);    // "User must be at least 18 years old"
    console.log(err.timestamp);  // ISO timestamp
  }
}

மேலும் தனிப்பயன் பிழை எடுத்துக்காட்டுகள்:

// NetworkError வகை
class NetworkError extends Error {
  constructor(url, status) {
    super(`Failed to fetch ${url}: Status ${status}`);
    this.name = "NetworkError";
    this.url = url;
    this.status = status;
  }
}

// DatabaseError வகை
class DatabaseError extends Error {
  constructor(operation, table, details) {
    super(`Database operation failed: ${operation} on ${table}`);
    this.name = "DatabaseError";
    this.operation = operation;
    this.table = table;
    this.details = details;
  }
}

// பயன்பாடு
try {
  throw new NetworkError("https://api.example.com/data", 404);
} catch(err) {
  if (err instanceof NetworkError) {
    console.log(`Network error for ${err.url}: ${err.status}`);
  }
}

தரநிலையற்ற பண்புகள் மற்றும் முறைகள்

🚫 முக்கிய எச்சரிக்கை:

பொது வலைத்தளங்களில் இந்த பண்புகள் மற்றும் முறைகளைப் பயன்படுத்த வேண்டாம். அவை அனைத்து உலாவிகளிலும் வேலை செய்யாது.

பண்பு விளக்கம்
arguments காலாவதியானது
caller காலாவதியானது
columnNumber Firefox மட்டும்
description Microsoft மட்டும்
displayName Firefox மட்டும்
fileName Firefox மட்டும்
lineNumber Firefox மட்டும்
number Microsoft மட்டும்
stack Firefox மட்டும்
முறைகள் விளக்கம்
evalError() காலாவதியானது
internalError() Firefox மட்டும்
toSource() தரநிலையற்றது

⚠️ மீண்டும் எச்சரிக்கை:

பொது வலைத்தளங்களில் இந்த பண்புகளைப் பயன்படுத்த வேண்டாம். அவை அனைத்து உலாவிகளிலும் வேலை செய்யாது.

🌐 குறுக்கு-உலாவி இணக்கத்தன்மை:

நவீன JavaScript இல், stack பண்பு பெரும்பாலான உலாவிகளில் ஆதரிக்கப்படுகிறது மற்றும் பிழை நிவாரணத்திற்கு பயனுள்ளதாக இருக்கிறது:

try {
  let x = y;  // ReferenceError
} catch(err) {
  console.log(err.stack);  
  // குவிப்பு தடத்தைக் காட்டுகிறது:
  // ReferenceError: y is not defined
  //   at filename.js:2:9
  //   at HTMLButtonElement.onclick (index.html:15:45)
}

குறிப்பு: stack பண்பு இப்போது Chrome, Firefox, Edge, மற்றும் Safari ஆகியவற்றில் ஆதரிக்கப்படுகிறது, ஆனால் அதன் வடிவமைப்பு உலாவிகளுக்கு இடையே மாறுபடலாம்.

Error Object முறைகள்

// Error பொருள்கள் toString() முறையைக் கொண்டுள்ளன
try {
  let x = undefinedVariable;
} catch(err) {
  console.log(err.toString());  
  // "ReferenceError: undefinedVariable is not defined"
  
  console.log(String(err));     
  // "ReferenceError: undefinedVariable is not defined"
  
  console.log('' + err);        
  // "ReferenceError: undefinedVariable is not defined"
}

Custom toString() முறை:

class CustomError extends Error {
  constructor(code, message) {
    super(message);
    this.name = "CustomError";
    this.code = code;
  }
  
  toString() {
    return `${this.name} [${this.code}]: ${this.message}`;
  }
}

// பயன்பாடு
let err = new CustomError(404, "Resource not found");
console.log(err.toString());  // "CustomError [404]: Resource not found"
console.log(String(err));     // "CustomError [404]: Resource not found"

நடைமுறை பயன்பாடு எடுத்துக்காட்டுகள்

பிழை வகை அடிப்படையில் கையாளுதல்

try {
  riskyOperation();
} catch(err) {
  switch(err.name) {
    case 'TypeError':
      handleTypeError(err);
      break;
    case 'ReferenceError':
      handleReferenceError(err);
      break;
    case 'RangeError':
      handleRangeError(err);
      break;
    default:
      handleUnknownError(err);
  }
}

பிழை லாக்கிங்

function logError(error) {
  const errorLog = {
    timestamp: new Date().toISOString(),
    name: error.name,
    message: error.message,
    stack: error.stack,
    url: window.location.href,
    userAgent: navigator.userAgent
  };
  
  // சேவையகத்திற்கு அனுப்பவும் அல்லது localStorage இல் சேமிக்கவும்
  console.error('Error logged:', errorLog);
  return errorLog;
}

பயனர் நட்பு பிழை செய்திகள்

function showUserFriendlyError(error) {
  const messages = {
    'TypeError': 'Something went wrong with the data type.',
    'ReferenceError': 'A reference error occurred.',
    'RangeError': 'The value is out of acceptable range.',
    'NetworkError': 'Unable to connect to the server.',
    'default': 'An unexpected error occurred. Please try again.'
  };
  
  return messages[error.name] || messages.default;
}

மேலும் பார்க்க:

JavaScript Errors

பல்வேறு JavaScript பிழை வகைகள் பற்றி அறியவும்

JavaScript Silent Errors

விதிவிலக்குகளை வீசாத அமைதியான பிழைகள் பற்றி அறியவும்

JavaScript Error Statements

try, catch, finally, மற்றும் throw அறிக்கைகள் பற்றி அறியவும்

JavaScript Debugging

JavaScript பிழைகளைக் கண்டறிந்து சரிசெய்வது பற்றி அறியவும்

JavaScript Error Reference பயிற்சி

JavaScript பிழை பொருள் பற்றிய உங்கள் அறிவைச் சோதிக்க இந்தப் பயிற்சியை முயற்சிக்கவும்.

பின்வரும் எந்த இரண்டு பண்புகள் அனைத்து உலாவிகளிலும் ஆதரிக்கப்படும் JavaScript Error பொருளின் தரநிலை பண்புகள்?

lineNumber மற்றும் fileName
✗ தவறு! lineNumber மற்றும் fileName ஆகியவை தரநிலையற்ற பண்புகள் மற்றும் Firefox இல் மட்டுமே ஆதரிக்கப்படுகின்றன
arguments மற்றும் caller
✗ தவறு! arguments மற்றும் caller ஆகியவை காலாவதியான பண்புகள் மற்றும் புதிய JavaScript பதிப்புகளில் ஆதரிக்கப்படாது
name மற்றும் message
✓ சரி! name மற்றும் message ஆகியவை அனைத்து உலாவிகளிலும் ஆதரிக்கப்படும் JavaScript Error பொருளின் இரண்டு தரநிலை பண்புகள். name பிழை வகையைக் குறிக்கிறது, message பிழை விளக்கத்தைக் கொண்டுள்ளது
stack மற்றும் description
✗ தவறு! stack மற்றும் description ஆகியவை தரநிலையற்ற பண்புகள்; stack Firefox இல் மட்டுமே ஆதரிக்கப்படுகிறது, description Microsoft இல் மட்டுமே ஆதரிக்கப்படுகிறது