演習課題「例外の種類を変更しよう」
右のコードでは、 Hello Word,answer,Hello C#を出力します。
しかし、100を0で代入したnumber変数で割るため例外が発生するのですが、捕捉する例外が異なるため、プログラムが強制終了してしまいます。
このプログラムにcatchブロックを追加して、ゼロで割り算した場合の例外を捕捉してください。追加したブロックでは、標準エラー出力に下記のメッセージを表示して下さい。
プログラムを実行して、想定どおり出力されれば演習課題クリアです!
期待する出力値
Hello World
Hello C#
期待する標準エラー出力値
0では割り算できません
演習課題「例外の種類を変更しよう」
右のコードでは、 Hello Word,answer,Hello C#を出力します。
しかし、ReadLineメソッドを使用するためnullを返し例外が発生してしまいますが、捕捉する例外が異なるため、プログラムが強制終了してしまいます。
このプログラムにcatchブロックを追加して、全ての例外を捕捉して下さい。追加したブロックでは、標準エラー出力に下記のメッセージを表示して下さい。
プログラムを実行して、想定どおり出力されれば演習課題クリアです!
期待する出力値
Hello World
Hello C#
期待する標準エラー出力値
例外を捕捉しました
#05:複数の例外を捕捉してみよう
複数の種類の例外に対応する方法を学習します。ゼロ除算や数値変換などの複数の例外に対応できるよう、割り算プログラムを改良していきましょう。
// 複数の例外を捕捉してみよう
using System;
class Lesson10
{
public static void Main()
{
Console.WriteLine("Hello World");
try
{
int number = int.Parse(Console.ReadLine());
int answer = 100 / number;
Console.WriteLine(answer);
}
catch (FormatException e)
{
Console.Error.WriteLine("引数が無効な形式です");
Console.Error.WriteLine(e);
}
catch (DivideByZeroException e)
{
Console.Error.WriteLine("0では割り算できません");
Console.Error.WriteLine(e);
}
catch (Exception e)
{
Console.Error.WriteLine("例外を捕捉しました");
Console.Error.WriteLine(e);
}
finally
{
Console.WriteLine("Hello C#");
}
}
}
【ArgumentNullException】
nullを引数として受け付けないメソッドに、nullを渡した場合に発生する例外
ArgumentNullException Class (System) | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/api/system.argumentnullexception?view=netframework-4.8
DivideByZeroException Class (System) | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/api/system.dividebyzeroexception?view=netframework-4.8
FormatException Class (System) | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/api/system.formatexception?view=netframework-4.8
例外処理 - C# によるプログラミング入門 | ++C++; // 未確認飛行 C
https://ufcpp.net/study/csharp/oo_exception.html
例外と例外処理 - C# プログラミング ガイド | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/exceptions/
Exception Class (System) | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/api/system.exception?view=netframework-4.8