Exception

Exception

プログラムを実行してみなければ、発生するかどうかわからないエラー = コンパイル時には発見できないエラー

注意

1.在class开始之前一定要import

2.FileNotFoundException需要写在IOException之前

IOExceptionをFileNotFoundExceptionの前に書くと、FileNotFoundExceptionの 例外が発生することはない

关于catch try finally

1.一个try可以对应多个catch

2.可以使用while 让trycatch更加灵活
例如:

try{
	String str;
  int num, code = 1;
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 	System.out.println("数を1つ入力してください。");
  str = br.readLine();
while(code == 1){
 	  try {
     num = Integer.parseInt(str);
     code = 0;
    }catch(NumberFormatException e) {
     System.out.println("入力された文字列は数に変換できません。入力しなおしてください。");
     str = br.readLine();//这里不光能报错,还能进行下一步的操作。
    }
 }
}catch(IOException e) {
  System.out.println("標準入力の処理ができませんでした。");
}//同时这里也用了两个try,catch

3.不管出不出错,finally{ }里的内容都会进行。
经常的用途是,比如说打开了一个文件,读到一半报错了,到catch以后就结束了,但是这个文件还一直开着。
不管有没有捕获到异常,都会执行finally的语句。
若无finally的语句,触碰到异常语句后,则不在继续向下执行。
但有finally的语句,触碰到异常语句后,仍然会执行finally里的语句。
所以,finally一般用于关闭打开的文件,删除临时的文件。

finally的用法,

IOException 输入输出例外

“入力“和”出力“是站在当前打开的程序,不是站在要编辑的文件的角度。

標準入力・ファイル入力で、入力ができない場合

 標準入力: プログラムをコマンドプロンプトから起動していない場合などは、入力不可能

 ファイル入力: 読み込もうとしたファイルが、「読み込み」のアクセス権がない場合などは、入力不可能

ファイル出力で、出力ができない場合

 書き込もうとしたファイルが、「書き込み」のアクセス権がない場合などは出力不可能

分類されているパッケージ: java.io

ArithmeticException 計算に関する例外

分類されているパッケージ: java.lang

StringIndexOutOfBoundsException

文字列における、文字の位置(インデックス)に関する例外

文字列において、実際には存在しない位置を指定した場合

分類されているパッケージ: java.lang

NumberFormatException

文字列の数値変換に関する例外

数値に変換することができない文字列を、変換しようとした場合

分類されているパッケージ: java.lang

ArrayIndexOutOfBoundsException

配列の添え字に関する例外

利用可能な範囲外の添え字を使おうとした場合

分類されているパッケージ: java.lang

IndexOutOfBoundsException

ArrayListのインデックスに関する例外

利用可能な範囲外のインデックスを使おうとした場合

分類されているパッケージ: java.lang

FileNotFoundException

ファイルに関する例外

読み込もうとしたファイルが存在しない場合

分類されているパッケージ: java.io

如果使用了IOException的话,FileNotFoundException不用在写

好的例子

例子1:提前写好公式,之后反复使用

public Boolean checkPositive(String s, String name){	try {
        double i = Double.parseDouble(s);
        if(i<=0){
		    	System.out.println(name + "必须⼤大于0");
          	return false;
            }
	}catch (NumberFormatException e){
		 System.out.println("必须输⼊一个数字"); 
		 return false;
	}
    return true;
}
System.out.println("请输入实时价格:");
String input = this.input.input();
Boolean b = checkPositive(input, "实时价格");
if(!b) return;//什么意思???
System.out.println("交易数量:"); 
String amount = this.input.input();
b = checkPositive(amount, "交易易数量");
if(!b) return;

例子2 finally的例子

FileInputStream in = null;
try {
	in = new FileInputStream ("myfile.txt");
	int b;
	b = in.read();
	while(b !=  -1) {
		System.out.print((char) b);
		b = in.read();
	}
} catch (FileNotFoundException e) {
	e.printStackTrace();
} catch (IOExpection e) {
	System.out.println(e.getMessage());
} finally { // finally里处理了in.close();关闭文件; 
	try {
		in.close();
	} catch (IOException e) {
		e.printStackTrace();
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值