谈谈Java中的异常处理机制
异常是程序员在写代码的时候无可避免的绊脚石。如何检错也成了各个程序员的必修课。
相信许多在用VC6.0的初学者一定对他的检错头疼不已,一个程序改来改去,却还是发不现错误的来由。而在完全面向对象的Java语言中检错也似乎变得了简单起来。
既然是完全的面向对象,错误也无可例外的成为了类。向我们常见的Exception类就是一个异常类。而Java中给所有的错误类建立了一个完善的继承关系。所有错误的父类都是Throwable类。而他的两大子类Exception(异常类)和Error(错误类)则使得Java程序员可以很好的捕捉到代码的bug以便程序员做出及时的修改。
究竟什么是错误和异常呢?
相信各位程序员在编写程序的时候都会常常遇到这些语句:java.lang.StackOverflowException; java.lang.NullPointerException; java.lang.ArrayIndexOutOfBoundsException.等等
其实这些红字就是Java对栈溢出,空指针和数组越界的处理。遇到了这些错误那么你就得留意你的数组循环之类易出错的地方了。
那么,如何捕捉异常呢?
Java中设置了许多的关键字来捕捉异常,首先我们来看try-catch-finally模式块。
try {
//对这里的代码做尝试性的运行,如果出现异常,则跳入catch块的
//代码
} catch ( Exception e ) {
//这里的代码是对出现异常情况下进行的处理
} finally {
//finally块中代码做清除扫尾的工作
}
try-catch语句例如下:
public class ExceptionTest {
public static void main(String args[]){
int num = 200;
ExceptionTest et = new ExceptionTest();
et.A(num);
}
public void A(int num){
try{
if(num>0 && num<100){
System.out.println("结果正确!");
}else{
Exception e = new Exception();
throw e;
}
}catch(Exception e){
System.out.println("结果超出范围");
e.printStackTrace();
}
}
}
运行结果如下:
结果超出范围
java.lang.Exception
at ExceptionTest.A(ExceptionTest.java:13)
at ExceptionTest.main(ExceptionTest.java:6)
try-catch语句是大伙最常用的语句了,可条条道路通罗马,Java中对异常的处理并不只有这一种,另一种就是在可能出现异常的方法后面加上throws语句,调用该方法的所有方法均要加上,再在出现异常代码区域加上throw语句,如下例
例:
public class ExceptionTest {
public static void main(String args[])throws Exception{
int num = 200;
ExceptionTest et = new ExceptionTest();
et.A(num);
}
public void A(int num) throws Exception{
if(num>0 && num<100){
System.out.println("结果正确!");
}else{
System.out.println("结果超出范围!");
Exception e = new Exception();
throw e;
}
}
}
运行结果为:
结果超出范围!
Exception in thread "main" java.lang.Exception
at ExceptionTest.A(ExceptionTest.java:19)
at ExceptionTest.main(ExceptionTest.java:7)
利用throws和throw或者try-catch-finally可以方便的找到出错位置和出什么错误。作为一个合格的Java程序员应该将其熟练掌握。
分享到:
相关推荐
android源码开发实战15.01.zip
今客CRM客户关系管理系统v15.01.txt
今客CRM客户关系管理系统源码v15.01.txt
ctl260 塔机plc程序Fcbj15.01.rar
Navicat15
今客CRM客户关系管理系统 v15.01 更新记录: +新增商品批量导入功能 +新增商品批量删除功能 +新增客户详细页的汇总统计 *优化图片过大导致加载慢的问题 *优化公海客户审核逻辑 -修复上一版本导入重复识别问题 -修复...
腾达E10固件是ni360(Q3)最合适刷的固件 该固件有以下功能:wisp万能中继、双wan、广告推送、qos等等,最重要的是磊科固件无线无法跑满,而刷该固件后,无线方面有极大提升。 100兆宽带不折腾使用绰绰有余。
codecool-frontend-couse-15.01.2021
QCOM from Quectel, very usefull
分析查看蓝牙HCI LOG工具,官网上下载,亲测安装可用。CPAS-15.01-18.11.17745.18431_signed.exe
分析查看蓝牙HCI LOG工具,官网上下载,亲测安装可用。分两个,这个是part2。CPAS-15.01-18.11.17745.18431_signed.exe
15.01.2106.013,Exchange 2016 CU19 <15.01.2176.009,Exchange 2019 CU7 <15.02.0721.013,Exchange 2019 CU8 <15.02.0792.010)。 默认情况下,所有组件都容易受到攻击。安装必须 。 $ g
NewHorizons, 带有Gregtech和Thaumcraft的新 Modpack GT新的horizon包包 Gregified modpack通过 Modtweaker ( MODS获得 GREGED )版本 2.0.2.7 is 15.01.2017 具有每个配方Gregified的大型 Modpack
Report builder 15.01 for Delphi7, 支持多种二维码
Symantec Norton Ghost 15.01 注册码
软件介绍: recALL能够帮助你从电子邮件...如果你在重装系统后发现把一些应用软件的序列号给遗忘了,可以在重装系统前使用recALL来备份你的应用程序序列号。注意:本软件recALL在使用时,NOD32会报不安全的应用程序!
15.01.19 书 20.01.19 课程 25.01.19 课程 27.01.19 课程 30.01.19 课程 31.01.19 课程 03.02.19 课程 04.02.19 课程 14.02.19 课程 16.02.19 课程 26.02.19 课程 没有完成 :( 07.03.19 课程 11.03.19...
网络截包Sniff软件源代码.zip
目录学分变更日志 支持的版本15.11.00-完全支持15.10.00-完全支持(CAPCOM不赞成使用) 15.02.00-完全支持(CAPCOM不赞成使用) 15.01.00-完全支持(CAPCOM不赞成使用) 14.02.00-完全支持14.01.00-完全支持14.00.00...
- 添加了新老板“欢乐”更新1.0.4 15.01.20201 - 更新级别更新1.0.2-3 06.01.20201 - 增加了成就。 - 纠正900人才后损坏罚款的重新计算。 - 纠正了奖牌的显示。更新1.0.1 / 27.12.2020 - 添加了老板。 - 增加水平和...