まず、例外の概念
-
定義:
プログラムは、実行期間が発生開始したときに、将来的に間違っている異常な実行エラー発生を指します。
-
態度の処理:
例外がキャッチすると、取引をするのは簡単だろう、それをプリントアウトこのエラーメッセージの例外であったとしても、これは良いプログラミングの練習です。
あなたがに対処していない場合、それは静かにエラーを非表示にするが、エラーがまだ存在しますが、それを見ることができません。これは絶対にそれを行うことができない、他の方法が対処するように、契約は、それがスローされる例外を入れて扱うことができない作るキャプチャには例外が存在する必要があり、非常に危険なプログラミングの練習です。とにかく、それは異常後に捕獲することはできませんが、非常に悪いプログラミングの練習で適切な治療を行わないでください。
第二に、故障分類
-
例外処理の方法:
メソッド宣言がスローされた例外をスローし使用します。この方法は、
例外のスロー
例外クラスを扱うことができる全ての例外クラスのための基礎クラスで、例外クラスは、すべての例外クラスを処理することができるスローされますがスローされます。
方法2:手動で投げる
スロー+例外オブジェクトの
例外をスローするように書き込む方法でその文のようなものを投げた例外オブジェクトを、と。
方法3:
試して... cacthついに...
try {
//处理业务代码
} catch (Exception e) {
//抛出异常处理,具体异常具体定
e.printStackTrace();
} finally{
//最终都需执行的代码
//一般做资源清理工作
}
私たちは、一般的に、異常なこの情報を印刷プリントアウトするのgetMessage()メソッドの使用に関する情報を含む、すべての間違った情報をプリントアウトするために、このメソッドを使用するのprintStackTrace()メソッドを使用します。この方法を使用する前に、それを呼び出すための新しいエラーオブジェクトに。それはメソッドの内部エラーオブジェクトに固有であるため。
- 5つの主要Javaの例外処理:トライ、キャッチ、最終的には、スロー、スロー
- 故障分類
サンプルコード:
package com.lixu.javabase.exception;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
/**
* 异常Demo
*/
public class ExceptionDemo {
/**
* 任何方法往外抛能处理的异常的时候都有一种简单的写法:“throws Exception”
* 因为Exception类是所有能处理的异常类的根基类,因此抛出Exception类就会抛出所有能够被处理的异常类里了。
* 使用“throws Exception”抛出所有能被处理的异常之后,这些被抛出来的异常就是交给JAVA运行时系统处理了,
* 而处理的方法是把这些异常的相关错误堆栈信息全部打印出来。
*/
void mothod() throws Exception{
}
public void method1() throws Exception{
//不处理,可能产生FileNotFoundException异常
@SuppressWarnings("resource")
FileInputStream flStream = new FileInputStream("mytext.txt");
//这里有可能会产生IOException异常
int b = flStream.read();
while (b != -1) {
System.out.println((char)b);
b = flStream.read();
}
}
public void method2() throws FileNotFoundException,IOException {
@SuppressWarnings("resource")
FileInputStream flStream = new FileInputStream("mytext.txt");
int b = flStream.read();
while (b != -1) {
System.out.println((char)b);
b = flStream.read();
}
}
public void method3(){
FileInputStream flStream = null;
try {
flStream = new FileInputStream("mytext.txt");
int b = flStream.read();
while(b != -1){
System.out.println((char)b);
b = flStream.read();
}
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e){
System.out.println(e.getMessage());
} finally{
try {
/**
* 前面已经把一个文件打开了,不管打开这个文件时有没有错误发生,即有没有产生异常,最后都一定要把这个文件关闭掉,
* 因此使用了finally语句,在finally语句里面不管前面这个文件打开时是否产生异常,在finally这里执行in.close()都能把这个文件关闭掉,
* 关闭文件也有可能会产生异常,因此在finally里面也使用了try……catch语句去捕获有可能产生的异常。
*/
flStream.close();
} catch(Exception e){
e.printStackTrace();
}
}
}
}
第三に、カスタム例外
package com.lixu.javabase.exception;
/**
* 自定义异常MyException
*/
public class MyException extends Exception {
private int id;
/**
* 自定义异常类的构造方法
* @param message
* @param id
*/
public MyException(String message,int id) {
super(message);
this.id = id;
}
/**
* 获取异常的代码
* @return
*/
public int getId() {
return id;
}
}
テスト定義の例外
package com.lixu.javabase.exception;
import java.text.MessageFormat;
public class TestMyException {
public static void main(String[] args){
TestMyException tmException = new TestMyException();
tmException.manage();
}
//throws MyException,抛出我们自定义的MyException类的异常。
public void regiter(int num) throws MyException{
if(num < 0){
//使用throw手动抛出一个MyException类的异常对象。
throw new MyException("人数为负值,不合理", 1);
}
System.out.println(MessageFormat.format("登记人数:{0}",num));
}
public void manage() {
try {
regiter(-100);
} catch (MyException e) {
System.out.println("登记失败,错误码:"+e.getId());
e.printStackTrace();
}
System.out.println("操作结束");
}
}
第四に、例外処理の概要
を参照します。https://www.cnblogs.com/xdp-gacl/p/3627390.html