C#でゼロ除算例外(DivideByZeroException)をキャッチする方法
C#では、整数値をゼロで除算しようとすると System.DivideByZeroException がスローされます。この例外は、プログラムの実行中に予期しないクラッシュが発生するのを防ぐために、try-catchブロックを使って適切に捕捉(キャッチ)する必要があります。
DivideByZeroExceptionは、ゼロで割り算を行った際に発生するエラーを処理するための専用クラスです。catch句でこの例外を指定することで、ゼロ除算によるエラーだけをピンポイントで捕捉できます。
コード例
以下は、try-catch-finally構文を使用してゼロ除算例外を捕捉するサンプルコードです。
using System;
namespace ErrorHandlingApplication {
class DivNumbers {
int result;
DivNumbers() {
result = 0;
}
public void division(int num1, int num2) {
try {
result = num1 / num2;
} catch (DivideByZeroException e) {
Console.WriteLine("Exception caught: {0}", e);
} finally {
Console.WriteLine("Result: {0}", result);
}
}
static void Main(string[] args) {
DivNumbers d = new DivNumbers();
d.division(25, 0);
Console.ReadKey();
}
}
}実行結果と解説
この例では、divisionメソッドに対して num1 = 25、num2 = 0 を渡しています。メソッド内では次の除算処理が実行されます。
result = num1 / num2;
ここで num2 が0に設定されているため、DivideByZeroException が発生します。しかし、あらかじめcatchブロックでこの例外を処理しているため、プログラムはクラッシュせず、例外メッセージがコンソールに出力されます。
その後、finallyブロックが必ず実行され、resultフィールドの初期値である「0」が出力されます。finallyブロックは、例外の発生有無にかかわらず必ず実行されるため、リソースの解放や後処理に適しています。
補足:事前にゼロチェックを行う方法
例外処理に頼る代わりに、除算を実行する前に除数がゼロかどうかを確認する方法も有効です。
public void division(int num1, int num2) {
if (num2 == 0) {
Console.WriteLine("除数にゼロは使用できません。");
return;
}
result = num1 / num2;
}このように事前チェックを行えば、例外オブジェクトの生成コストを避けることができ、パフォーマンス面でも有利になります。状況に応じて、try-catchによる例外処理と事前チェックを使い分けるとよいでしょう。
-
【初心者向け】C++の例外処理の仕組みを徹底解説!try・catch・throwの基本から独自例外の作成まで
C++における例外処理(Exception Handling)とは、プログラムの実行中に発生するエラー(ランタイムエラー)を適切に処理するための仕組みです。例外とは、実行時に送出されるイベントのことを指し、C++ではすべての標準例外が std::exception クラスを基底クラスとして定義されています。 もし例外を捕捉しなければ、プログラムは例外メッセージを出力した後に異常終了してしまいます。例外はハンドリング可能なランタイムエラーであり、適切に処理することでプログラムの堅牢性を大きく向上させることができます。 標準例外クラスの階層構造 C++標準では、例外は <exception&
-
Chromebookでスクリーンショットを撮る方法を徹底解説!ショートカットキーから拡張機能・スタイラスまで
Chromebookは、ユーザーの作業や生活をより快適にするために設計された、シンプルで扱いやすいマシンです。しかし、比較的新しいデバイスであるため、まだ知られていない機能も少なくありません。WindowsやMacでのスクリーンショットの撮り方はご存じの方が多いでしょうが、Chromebookでは同じ方法は使えません。とはいえ、難しいどころか、実はもっと簡単で、スクリーンショットをカスタマイズできるオプションも複数用意されています。Google Chromebookでスクリーンショットを撮るすべての方法をご紹介する前に、まず覚えておきたいキーボードのキーについて説明します。 Chromebo