Android
 Computer >> コンピューター >  >> プログラミング >> Android

Kotlinでカスタム例外をスローする


例外は、プログラミング言語の重要な側面です。これにより、実行時にコードが誤った出力を生成するのを防ぎます。

Kotlinの例外の概念は、Javaの場合とほとんど同じです。 Kotlinのすべての例外は、 Throwableの子孫です。 クラス。 Kotlinでは、開発者には独自のカスタム例外を作成する権限があります。

カスタム例外は、チェックされていない例外の一部です。 つまり、実行時にスローされます。

Kotlinでカスタム例外を使用する前に、チェックされている例外とチェックされていない例外を見てみましょう。

チェックされた例外

チェックされる例外は、コンパイル時にチェックされる例外です。次の例では、チェックされた例外を生成しました。 FileNotFoundExceptionまたはIOExceptionはチェックされた例外です。

import java.io.File
import java.io.InputStream

fun main(args: Array<String>) {
   try {
      val inputStream: InputStream = File("Hello.txt").inputStream()
   }
   catch(e:Exception) {
      e.printStackTrace();
   }
}

出力

上記のコードを実行すると、次の出力が生成されます。コンパイル中に、チェックされた例外が出力として取得されたことがわかります。

$kotlinc -nowarn main.kt -include-runtime -d main.jar
$java -Xmx128M -Xms16M -jar main.jar
java.io.FileNotFoundException: Hello.txt (No such file or directory)
   at java.io.FileInputStream.open0(Native Method)
   at java.io.FileInputStream.open(FileInputStream.java:195)
   at java.io.FileInputStream.(FileInputStream.java:138)
   at MainKt.main(main.kt:6)
>

チェックされていない例外

チェックされていない例外は、コンパイル時にチェックされない例外であり、実行時にスローされます。次の例では、チェックされていない例外を生成します。未チェックの例外の例として、ArithmeticException、NumberFormatExceptionのいずれかを考えることができます。

fun main(args: Array) {
   try {
      val myVar:Int = 12;
      val v:String = "Tutorialspoint.com";
      v.toInt();
   }
   catch(e:Exception) {
      e.printStackTrace();
   }
   finally {
      println("Exception Handeling in Kotlin");
   }
}

出力

上記のコードを実行すると、次の出力が生成されます-

$kotlinc -nowarn main.kt -include-runtime -d main.jar
$java -Xmx128M -Xms16M -jar main.jar
Exception Handeling in Kotlin
java.lang.NumberFormatException: For input string: "Tutorialspoint.com"
   at java.lang.NumberFormatException.forInputString(NumberFormatExc eption.java:65)
   at java.lang.Integer.parseInt(Integer.java:580)
   at java.lang.Integer.parseInt(Integer.java:615)
   at MainKt.main(main.kt:5)

Kotlinのカスタム例外

非常に単純な例を使用して、独自のカスタム例外を作成します。この例では、変数を宣言し、その変数値が50未満であるかどうかを確認しています。結果に応じて、Kotlinの組み込み機能を使用してカスタム例外をスローします。

fun main(args: Array) {
   val sampleNumber:Int;
   sampleNumber = 100;
   if(sampleNumber > 50)
   {
      //throwing custom exception instead of other checked Exception
      throw myCustomException("Invalid Inputs - Please enter a correct number")
   }

   else
   {
      println("Welcome !! you have entered a correct value")
   }
}

//declaring custom exception class
class myCustomException(message: String) : Exception(message)

出力

このコードを実行すると、次の出力が得られます。渡されたメッセージとともにカスタム例外をスローしていることがわかります。

$kotlinc -nowarn main.kt -include-runtime -d main.jar
$java -Xmx128M -Xms16M -jar main.jar

Exception in thread "main" myCustomException: Invalid Inputs -
Please enter a correct number
at MainKt.main(main.kt:7)

  1. Javaでカスタム例外を作成するにはどうすればよいですか?

    アプリケーションの要件に基づいて、意味のある例外を開発する必要がある場合があります。 JavaでExceptionクラスを拡張することで、独自の例外を作成できます Javaでのユーザー定義の例外は、カスタム例外とも呼ばれます。 例を使用してカスタム例外を作成する手順 CustomExceptionクラスは、このクラスがExceptionクラスを拡張しているカスタム例外クラスです。 ローカル変数メッセージを1つ作成して、例外メッセージをクラスオブジェクトにローカルに保存します。 カスタム例外オブジェクトのコンストラクターに文字列引数を渡します。コンストラクターは、引数文字列をプライベート文

  2. Rubyのカスタム例外

    Rubyで独自の例外を作成するのは簡単です。次の手順に従ってください: 1。新しいクラスを作成する 例外は、Rubyの他のすべてと同じように、クラスです。新しい種類の例外を作成するには、StandardErrorまたはその子の1つから継承するクラスを作成するだけです。 class MyError < StandardError end raise MyError 慣例により、新しい例外のクラス名は「エラー」で終わります。カスタム例外をモジュール内に配置することもお勧めします。つまり、最終的なエラークラスは次のようになります:ActiveRecord::RecordNotFound