10月2号-异常处理
来源:互联网 发布:c语言中如何定义数组 编辑:程序博客网 时间:2024/04/28 14:28
1. 异常处理入门
异常在JAVA中代表一个错误的实体对象。异常有:预期中可能发生的异常,编译器会提醒您先行处理。对于一些程序运行时发生的执行时异常,您有机会捕捉这些异常,并尝试将程序恢复到正常运行状态。
在程序中可以使用try,catch,finally这3个关键词组合的语法来达到。其语法如下:
public class demo {
try{
//执行的语句
}
catch{
//异常处理
}
finally{
//一定会处理的语句
}
}
try区块必须有对应的catch区块或finally区块。Try可以搭配多个catch区块,如果设置了catch区块那么finally区块可以有也可以不要。如果没有设置catch那么就一定要设置finally.
/*如果执行程序时没有指定变量,那么args数组的长度是0,程序中尝试从args[0]取得变量时就会发生错误
错误的实例是ArrayIndexOutOfBoundsException,这个实例就会被对应的catch区块捕捉到,在范例中给
异常对象指定名字e,异常被捕捉后会执行对应的catch区块,在范例中显示提示信息,使用printStackTrace()
方法显示异常信息。
*/
public class CheckArgsDemo {
public static void main(String[] args) {
try {
System.out.println("执行数组" + args[0]);
}
// ArrayIndexOutOfBoundsException用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引。
catch (ArrayIndexOutOfBoundsException e) {
System.out.println("没有指定变量");
e.printStackTrace();
}
}
}
2.可控式异常(Checked Exception)和执行时异常(Runtime Exception)
可控式异常是可预测的,例如使用输入输出功能时,可能会由于硬件原因,使得程序无法正常从硬件取得输入或进行输出。这样的错误是可以预期发生的,像这样的类的异常称为可控式异常。对于可控式异常编译器会要求您进行异常处理,例如在使用java.io.BufferedReader的readLine()方法取得用户的输入时,编译器会明确要求您在程序中告知如何处理java.io.IOException.
如
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class CheckedExceptionDemo {
public static void main(String[] args) {
try {
BufferedReader buf = new BufferedReader(new InputStreamReader(
System.in));
System.out.println("请输入整数:");
int input = Integer.parseInt(buf.readLine());
System.out.println("input*10=" + (input * 10));
} catch (IOException e) {//可控式异常
System.out.println("I/O错误");
} catch (NumberFormatException e) {//执行时异常
System.out.println("输入的必须是整数");
}
}
}
上面例子试着从用户输入取得一个整数值,由BufferedReader对象所读取到的输入是一个字符串,您使用Integer类的parseInt()方法试着剖析该字符串为整型,如果无法剖析,则会发生错误并丢出一个NumberFormatException异常对象。当这个异常丢出后,程序会离开当前执行的位置。而如果设置的catch捕捉这个异常,则会执行catch区块里面的语句。
3.throw和throws
如果想自己丢出异常,可以使用throw关键词。
举个例子:在JAVA中除法中,允许浮点数运算时除数为0,所得到的结果是Infinity,也就是无穷大数。如果想要自行检验除零错误,可以自行丢出ArithmeticException异常。这个异常是在整数除法且除数为0时所引发的异常,可以让浮点数运算除数为0时也丢出这个异常。
如:
public class ThrowDemp {
public static void main(String[] args) {
try {
double data = 100 / 0.0;
System.out.println("浮点数除以0" + data);
if (String.valueOf(data).equals("Infinity")) {
throw new ArithmeticException("除零异常");
}
} catch (ArithmeticException e) {
System.out.println(e);
}
}
}
4.异常的继承架构
JAVA所处理的异常分为2大类:一种是严重的错误,一般是硬件问题或是内存不足等问题,与此相关的类是位于java.lang下的Error类及其子类,这类的错误程序是没有办法恢复的。
还有一种是:非严重错误。例如用户输入的不合格式的数据等等问题,位于java.lang下的Exception类及其子类。
Error类和Exception类都是继承Throwable类。可以参看API。这里不讲了。
- 10月2号-异常处理
- 软件随想录(local.joelonsoftware.com/wiki)-2003年10月13日 异常处理 - Exceptions
- 【内核周报-2014年10月9日】用户态处理页异常
- 2013年9月8日 、异常处理
- Java-----10、异常处理
- 10 全局异常处理
- 读书笔记--异常处理(2)
- C++异常处理 2
- struts1.2异常处理
- 异常处理-2
- struts1,2异常处理
- Python3.2 --- 异常处理
- 异常处理2
- mysql5异常处理(2)
- JAVA异常处理(2)
- 异常处理2
- 异常处理2
- 异常处理2
- 搭载高清晰相机的可编程嵌入式远程拍照和监控平台
- Difference between "select_catalog_role" and "select any dictionary"
- 写在考研前
- KTDictSeg 1.4 版本功能介绍 - 多元分词
- [转]迅雷——机遇?赌博?笔试题
- 10月2号-异常处理
- JAVA常见异常原因
- sql2000企业版安装
- emc——网上搜索到的笔试题
- ORA-19815: WARNING: string of string bytes is string%% used, and has string remaining bytes available.
- makefile的规则
- 数字花招,归纳的东西好啊
- DB_RECOVERY_FILE_DEST_SIZE
- 随感一则