Java异常处理

Java采用的异常处理机制,是将异常处理的程序代码集中在一起, 与正常的程序代码分开,使得程序简洁、优雅,并易于维护。

* 异常的处理: 抓抛模型
*
*
* 过程一 : 抛, 程序在执行过程中,一旦出现异常,就会在异常处生成一个对应异常类的异常对象,
* 并将此对象抛出,
* 一旦抛出对象后,其后代码就不会执行了
*
* 过程二: 抓 可以理解为异常的处理方式
* a: try-catch-finally
* b: throws

try-catch-finally 处理

 * try{
*
* 可能出现异常的代码
*
* }catch(异常类型1,变量名1){
* //处理异常的方法1
* }catch(异常类型2, 变量2){
* //处理方式2
* }
* ......
*
* finally{
* //一定会执行的代码
* }
*
*/

try{

...... //可能产生异常的代码 }

catch( ExceptionName1 e ){

...... //当产生ExceptionName1型异常时的处置措施 }

catch( ExceptionName2 e ){
...... //当产生ExceptionName2型异常时的处置措施
}
[ finally{
...... //无论是否发生异常,都无条件执行的语句
}]

// finally 是可选择的 不是必须de
// try把可能出现异常的代码包装起来,在执行过程中,一旦出现异常,就会生成一个对应异常处理的对象,根据此对象的类型,去catch中匹配
// 一旦try中的异常对象匹配到某一个catch时就进入这个catch中进行异常处理,一旦处理完成就跳出当前的tray-catch结构(在没有写finally)继续执行后面的结构
// catch没有字父类关系,声明再上和下无所谓
// 常用的异常处理发方式: String : getMessage() e.printStackTrace()
    public static void main(String[] args) {
try {
String abc = "abc";
Integer num = Integer.parseInt(abc);
}catch (NumberFormatException e){
e.printStackTrace();
System.out.println("碰到了异常别着急");
}
System.out.println("hello");
}

finally: 上面的无论是否获取到,都会执行下面的finally信息

finally声明的是一定会被执行的代码, 不论catch是否执行了都会去执行finally的信息

   try{
String abc = "abc";
int num = Integer.parseInt(abc);
System.out.println(num);
}catch (NumberFormatException e){ //正常错误获取
System.out.println("This is num error");
}catch (FactoryConfigurationError e){
System.out.println(e);
}finally {
System.out.println("上面的获取到了");
}
}
输出:
// This is num error
//上面的获取到了

catch未获取到错误信息 finally也输出

  public static void main(String[] args) {
try{
String abc = "abc";
int num = Integer.parseInt(abc);
System.out.println(num);
}catch (IllegalAccessError e){
System.out.println("This is num error");
}catch (FactoryConfigurationError e){
System.out.println(e);
}finally {
System.out.println("上面的错误未获取到");
}
}
//上面的错误未获取到

异常处理方式二:

throws+异常类型

   public static void main(String[] args) {
try{
method2();
}catch(NumberFormatException e){
System.out.println("碰到了问题");
}
} public static void method2() throws NumberFormatException{ method1();
System.out.println("pengdaole "); }
public static void method1(){
String abc = "abc";
int num = Integer.parseInt(abc);
}

体会:

try catch 是真正的处理异常,而throws只是把异常抛给了方法的调用者,并没有将异常处理掉

.

异常的处理try-catch的更多相关文章

  1. 处理异常的 try,catch

    try catch finally 1.将预见可能引发异常的代码包含在try语句块中. 2.如果发生了异常,则转入catch的执行.catch有几种写法: catch 这将捕获任何发生的异常. cat ...

  2. Java异常之try,catch,finally,throw,throws

    Java异常之try,catch,finally,throw,throws 你能区分异常和错误吗? 我们每天上班,正常情况下可能30分钟就能到达.但是由于车多,人多,道路拥挤,致使我们要花费更多地时间 ...

  3. 前端魔法堂——异常不仅仅是try/catch

    前言  编程时我们往往拿到的是业务流程正确的业务说明文档或规范,但实际开发中却布满荆棘和例外情况,而这些例外中包含业务用例的例外,也包含技术上的例外.对于业务用例的例外我们别无它法,必须要求实施人员与 ...

  4. Java解决异常之try、catch、finally、throw、throws&log4j记录日志步骤

    知识点一.多重catch引发多种类型的异常排列catch 语句的顺序:先子类后父类 发生异常时按顺序逐个匹配只执行第一个与异常类型匹配的catch语句二.异常分类异常分为运行时异常和检测异常运行时异常 ...

  5. (后端)异常不仅仅是try/catch

    前言  编程时我们往往拿到的是业务流程正确的业务说明文档或规范,但实际开发中却布满荆棘和例外情况,而这些例外中包含业务用例的例外,也包含技术上的例外.对于业务用例的例外我们别无它法,必须要求实施人员与 ...

  6. java:异常机制(try,catch,finally,throw,throws,自定义异常)

    * String类中的格式化字符串的方法: * public static String format(String format, Object... args):使用指定的格式字符串和参数返回一个 ...

  7. 异常依然执行{try..catch语句块..}的后续代码

    测试异常依然执行{try..catch语句块..}的后续代码: private static Integer testThrows() throws Exception{ Integer result ...

  8. Java中有多个异常, 如何确定捕获顺序(多个catch),先从上到下执行,判断异常的大小,如果包含捕到异常,就进入这个catch,后面的就不再执行

    Java中异常的捕获顺序(多个catch)( Java代码 import java.io.IOException; public class ExceptionTryCatchTest { publi ...

  9. 【Java】异常 —— throw, throws, try catch 相关内容

    嗯……面试考到了这个,又是一个如无意外 那么接下来就总结吧 一.什么是异常 程序运行过程中发生的异常事件. RuntimeException通常是因为编程员因为疏忽没有检查而引起的错误. 二.Exce ...

  10. java-异常-异常捕捉及多catch情况(try-catch)

    1 package p1.exception; 2 3 4 /* 5 * 异常处理的捕捉形式: 6 * 这是可以对异常进行针对性处理的方式. 7 * 8 * 具体格式是: 9 * try{ 10 * ...

随机推荐

  1. 【报错】An error happened during template parsing (template: "class path resource [templates/adminManageCourse.html]")

    页面显示: Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing t ...

  2. python依赖包整体迁移方法(pip)

    做个记录 python依赖包整体迁移方法

  3. python学习三十四天函数高阶函数定义及用法

    python函数高阶函数是把函数当成一个变量,传递给函数作为参数,或者函数的返回值里面有函数,都称为高阶函数, 1,把函数作为参数传递 def dac(x,y): return x+y def tes ...

  4. jsp:useBean的属性class值一直报错的问题

    先附上代码: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8 ...

  5. JavaScript 数组sort方法使用

    直接上例子 1.无参调用返回按unicode字符编码排序 var arr = [1,2,0,21,15,6,34,9,45]; var arrSort = arr.sort(); console.lo ...

  6. HTML基础:用表单写一个简易登录页面

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  7. ltp-ddt nand_perf_ubifs_w_cpuload

    NAND_M_PERF_UBIFS_CPU_LOAD source 'common.sh';/opt/ltp/runltp -f ddt/nand_perf_ubifs -s "NAND_S ...

  8. svnkit 异常:Exception in thread "main" org.tmatesoft.svn.core.SVNException: svn: E200030: SQLite error

    https://stackoverflow.com/questions/16063105/org-tmatesoft-sqljet-core-sqljetexception-busy-error-co ...

  9. spring 整合rabbitMQ

    <!-- 配置邮件消息队列监听 --> <bean id="maillistener" class="cn.xdf.wlyy.listener.Mail ...

  10. bzoj2004 [Hnoi2010]Bus 公交线路 矩阵快速幂+状压DP

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=2004 题解 如果 \(N\) 没有那么大,考虑把每一位分配给每一辆车. 假设已经分配到了第 \ ...