try は、JavaScript のキーワードで、エラーハンドリングを行うために使用されます。try 文は、指定したコードブロック内で発生する可能性のあるエラーを監視し、発生した場合にそのエラーを捕捉して処理するために catch と組み合わせて使われます。

構文

編集
try {
  // エラーチェックを行いたいコード
} catch (e) {
  // 例外が発生した場合の処理
} finally {
  // 例外の有無に関わらず実行されるコード
}

try ブロック内のコードでエラーが発生した場合、catch ブロックが実行されます。もし try ブロックが正常に終了した場合、catch ブロックはスキップされます。また、finally ブロックは例外の発生に関わらず常に実行されます。

使用例

編集

基本的な使用法

編集
try {
  let result = riskyFunction();
  console.log(result);
} catch (e) {
  console.log('Error occurred: ' + e.message);
}
// 出力:
// Error occurred: [エラーメッセージ]

この例では、riskyFunction() がエラーを発生させる可能性があり、その場合に catch ブロックが実行されます。エラーが発生した場合、エラーメッセージが表示されます。

例外を捕捉して処理する

編集
function divide(a, b) {
  try {
    if (b === 0) {
      throw new Error('Division by zero is not allowed');
    }
    return a / b;
  } catch (e) {
    return 'Error: ' + e.message;
  }
}

console.log(divide(10, 0));  // 出力: Error: Division by zero is not allowed
console.log(divide(10, 2));  // 出力: 5

trycatch を使って、特定の条件(この場合はゼロ除算)に対して例外を発生させ、捕捉して適切なメッセージを返しています。

finally の使用

編集
function fetchData() {
  try {
    console.log('Fetching data...');
    throw new Error('Failed to fetch data');
  } catch (e) {
    console.log('Error: ' + e.message);
  } finally {
    console.log('Cleanup resources');
  }
}

fetchData();
// 出力:
// Fetching data...
// Error: Failed to fetch data
// Cleanup resources

finally ブロックは、trycatch が終了した後に必ず実行されるコードです。エラーが発生したかどうかに関係なく、後処理を行うのに便利です。

ネストした try...catch

編集
function processData(data) {
  try {
    if (data === null) {
      throw new Error('Data is null');
    }
    try {
      console.log('Processing data: ' + data);
      throw new Error('Processing error');
    } catch (e) {
      console.log('Error in processing: ' + e.message);
    }
  } catch (e) {
    console.log('Main error: ' + e.message);
  }
}

processData(null);
// 出力:
// Main error: Data is null

processData('Valid data');
// 出力:
// Processing data: Valid data
// Error in processing: Processing error

try...catch はネストして使うこともできます。外側の try で捕捉しきれなかったエラーを、内側の try で処理することができます。

注意点

編集
  • try ブロック内でエラーが発生すると、通常のコードの実行は停止し、制御は catch ブロックに移ります。
  • catch ブロックでは、例外がスローされたときに発生したエラーオブジェクトにアクセスできます。このオブジェクトには、エラーメッセージやスタックトレースなどが含まれています。
  • finally ブロックは、例外が発生してもしなくても実行されるため、クリーンアップ処理やリソース解放に利用することができます。

関連項目

編集

参考

編集