JavaScript/try
try
編集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
try
と catch
を使って、特定の条件(この場合はゼロ除算)に対して例外を発生させ、捕捉して適切なメッセージを返しています。
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
ブロックは、try
や catch
が終了した後に必ず実行されるコードです。エラーが発生したかどうかに関係なく、後処理を行うのに便利です。
ネストした 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
ブロックは、例外が発生してもしなくても実行されるため、クリーンアップ処理やリソース解放に利用することができます。