[C#入門]第15回 例外処理(1) try〜catch〜finally文

はじめに

例外とは、プログラム中で予期せず発生するエラーのことをいいます。

今回は、この例外を対処する方法について説明します。

Try〜Catch〜Finally文

数値を0では割ることができないので、このような処理をした場合は例外が発生します。

このままではプログラムが停止してしまいますので、Try〜Catch〜Finallyを使用して例外に対する処理を行います。

 

C#におけるtry〜catch〜finally

try〜catch〜finallyの構文を以下に示します。

例外が発生する可能性があるコードはtryの{}に書き、例外発生時の対応処理はcatch の{}に書きます。また、例外発生の有無に関係なく実行したい処理がある場合はfinally の{}に書きます。

なおtry句は必須ですが、catchとfinallyはどちらか一方のみにすることができます。

try {
  // 例外が発生する可能性のあるコード
} 
catch (例外の種類) {
  // 例外処理
} 
finally {
  // 例外発生の有無に関係なく実行したい処理
}

以下にtry〜catch〜finallyの使用例を示します。この例ではtry句で割り算を行っています。コンソールから入力された値がゼロの場合は例外が発生します。例外が発生すると「ゼロによる除算を行いました」を表示します。また、最後にfinallyで「計算が終了しました」を表示します。

try {
    var x = Console.ReadLine();
    var ans = 5 / int.Parse(x);

}
catch (Exception) {
    Console.WriteLine("ゼロによる除算をしました。");

}
finally {
    Console.WriteLine("計算が終了しました。");

}

VB.NETにおけるtry〜catch〜finally

VB.NETにおけるtry〜catch〜finallyは以下の書式を使用します。

Try
    '例外が発生する可能性のあるコード

Catch 例外の種類
    '例外処理

Finally
    '例外発生の有無に関係なく実行したい処理
End Try

C#でのサンプルをVB.NETに書き直した例を以下に示します

Try
    Dim x = Console.ReadLine()
    Dim ans = 5 / Integer.Parse(x)

Catch ex As Exception
    Console.WriteLine("ゼロによる除算をしました。")

Finally
    Console.WriteLine("計算が終了しました。")

End Try

Javaにおけるtry〜catch〜finally

Javaにおけるtry〜catch〜finallyの構文はC#と同様です。

try {
  // 例外が発生する可能性のあるコード
} catch (例外の種類) {
  // 例外処理
} finally {
  // 例外発生の有無に関係なく実行したい処理
}

C#で示した例をJavaで書き直した例を以下に示します。

try {
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    String x = reader.readLine();
    int ans = 5 / Integer.parseInt(x);
	
} catch (Exception e) {
    System.out.println("例外が発生しました。");

} finally {
    System.out.println("計算が終了しました。");
}

Swiftにおけるtry〜catch〜finally

Swiftにおけるtry〜catch〜finallyは以下の書式を使用します。

doの中で例外が発生するコードを記述するのですが、例外が発生する処理(関数)を呼び出す際は、先頭にtryを付けます。

例外処理は他の言語と同様にcatch {}に記述します。

do {
  try 例外が発生する可能性の関数
} catch {
   // 例外処理
}

C#で示した例をSwiftで書き直した例を以下に示します。

warizanという関数の中で、引数xが0の場合に例外をスローしています。よって、tryの中でwarizanを呼び出すと、引数の値が0のときに例外が発生し、catchが実行されます。

enum MyErrors: Error {
    case DividedByZero
}

// 割り算をする関数
func warizan(x : Int) throws -> Int {
    if x == 0 {
        throw MyErrors.DividedByZero
    }
    return 5 / x
}


do {
    let x = 0
    try warizan(x: x)
    
} catch {
    print("ゼロによる除算をしました。")
}

 

[C#入門]第14回 do〜while文

はじめに

前回は、while文による繰り返し処理について説明しました。

今回説明する do〜while文は、最低1回は処理を実施して、最後の条件式で繰り返し処理を継続するかを判断するものです。

C#における do〜while文

C#における do〜while文の書式を以下に示します。

while文に似ていますが、冒頭でも述べたように最後に繰り返すかどうかを判断します。よって最初にdo { 〜 } の処理を実行します。

do {
  // 処理
} while (条件式)

以下は、do〜while文の使用例です。この例では、xの値を表示してインクリメントを行った後に、条件式で繰り返しの判断をしています。条件式は x < 5 ですので、5回繰り返し処理を行います。

var x = 0;

do {
    Console.WriteLine(x);
    x++;
} while (x < 5);

 

VB.NETにおける do〜while文

VB.NETでのdo〜while文は、C#の書式と少し異なります。

Do
    '処理
Loop While 条件式

以下に、VB.NETでの例を示します。

Dim x As Integer = 0

Do
    Console.WriteLine(x)
    x += 1
Loop While x < 5

 

Javaにおけるdo〜while文

Javaにおけるdo〜while文の書式はC#と同じです。

do {
  // 処理
} while (条件式)

以下に、Javaでの例を示します。

int x = 0;

do {
    System.out.println(x);
    x++;
} while (x < 5);

 

Swiftにおける do〜while文

swiftにおけるdo〜while文は、C#とは異なりrepeat〜while文を使用します。使用方法はC#と同じです。

repeat {
  // 処理
} while (条件式)

以下に、Swiftでの例を示します。

var x = 0

repeat {
    print(x)
    x += 1
} while (x < 5)

 

do〜while文からの脱出

do〜whileから脱出するにはbreak文を使用します。

前回の記事で説明をしていますので、そちらを参照してください。

[C#入門]第13回 繰り返し処理 while文

はじめに

前回は、foreach文による繰り返し処理について説明しました。

今回は、while文による繰り返し処理について説明します。

目次

  1. while文の基本
  2. while文からの脱出

while文の基本

while文は、条件が成り立っている間は繰り返し処理を行うという特徴があります。

以下に各言語での基本的な使用方法を示します。

C#におけるwhile文

while文の書式は以下の通りです。

while (条件式) {
  // 処理
}

例えば、変数xが5未満の時に繰り返し処理を実行したい場合は以下のようにします。

この例では xの初期値が1ですので、「x < 5」という条件式を満たし、繰り返し処理が始まります。繰り返し処理の中で、xが1ずつカウントアップします。4回繰り返すと条件式を満たさなくなりwhile文を抜けます。

var x = 1;

// xが5未満のときに繰り返し処理を行う
while (x < 5) {
    Console.WriteLine(x);
    x++;
}

VB.NETにおけるwhile文

VB.NETにおける while文の書式を以下に示します。Whileで始まり、Wendまでの間を繰り返して処理します。

While (条件式)
  '処理
Wend

以下に使用例を示します。

Dim x As Integer = 1

' xが5未満のときに繰り返し処理を行う
While (x < 5)
    Console.WriteLine(x)
    x += 1
End While

Javaにおけるwhile文

Javaにおけるwhile文の書式はC#と同じです。

while (条件式) {
  // 処理
}

Javaでの使用例を以下に示します。

int x = 1;

while (x < 5) {
	System.out.println(x);
	x++;
}

SwiftにおけるWhile文

Swiftにおけるwhile文はC#やJavaに似ていますが、条件式を()で括らないという点で異なります。以下にSwiftでのwhile文の書式を示します。

while 条件式 {
  // 処理
}

以下にSwiftでの使用例を示します。

var x = 1

while x < 5 {
    print(x)
    x += 1
}

while文からの脱出

条件式を満たす前にwhile文を抜けたい場合があります。このような場合、C#ではbreakキーワードを使用します。それぞれの言語でのbreakキーワードの使用方法について以下に示します。

C#でのbreakキーワード

以下は、xの値が3と等しい時にbreakキーワードを使用してwhile文を抜ける例です。

var x = 1;

// xが5未満のときに繰り返し処理を行う
while (x < 5) {
    Console.WriteLine(x);
    
    // xが3のときにwhile文を抜ける
    if (x ==3) { break; }

    x++;
}

VB.NETでのbreakキーワード

VB.NETの場合は、breakではなくExit Whileを使用します。

VB.NETでの使用例を以下に示します。

Dim x As Integer = 1

' xが5未満のときに繰り返し処理を行う
While (x < 5)
    Console.WriteLine(x)

    ' xが3の時にWhile文を抜ける
    If x = 3 Then
        Exit While
    End If

    x += 1
End While

Javaでのbreakキーワード

JavaはC#と同様にbreakキーワードを使用します。

以下に使用例を示します。

int x = 1;

while (x < 5) {
	System.out.println(x);
	
        // xが3のときにwhile文を抜ける
        if (x == 3) {
            break;
        }
        x++;
}

Swiftでのbreakキーワード

Swiftも、C#やJavaと同様にbreakキーワードでwhile文を抜けることができます。

以下に使用例を示します。

var x = 1

while x < 5 {
    print(x)
    
    // xが3のときにwhile文を抜ける
    if x == 3 { break }
    
    x += 1
}