嗯……面试考到了这个,又是一个如无意外

那么接下来就总结吧

一、什么是异常

程序运行过程中发生的异常事件。

RuntimeException通常是因为编程员因为疏忽没有检查而引起的错误。

二、Exception和Error的区别

Exception:

1.可以是可被控制(checked)或者不可控制(unchecked);

2.表示一个由程序员导致的错误;

3.应该在应用程序级被处理;

Error:

1.总是不可控制的(unchecked);

2.经常用来表示系统错误或者底层资源错误;

3.如果可能的话,应该在系统级被捕捉;

三、throw、throws、try...catch...

①throw

②throws

③try...catch...finally...以及语句中出现return的情况

④自定义异常

throw是语句抛出一个异常,语法:

throw e 

例子:

String a = "abcd";
if(a.length()>5) {
  throw new NullPointerException(); //具体的异常需与方法内容相关,否则编译不通过
}
if(a.length()>5) {
  throw new IndexOutOfBoundsException();
}
if(a.length()>5) {
  //throw new IOException(); 编译不通过
}

throws是方法抛出一个异常,语法:

public void doSomething() //具体方法
throws Exception1, Exception2{}//抛出的异常 //示例
public static int calculate(int a, int b) throws ArithmeticException {
  int c = a/b;
  return c;
}

throw和throws的总结:

  throw throws
定义 语句抛出异常 声明异常/方法抛出异常
语法 throw e [方法] throws e1,e2
 位置 用于方法内  位于方法声明后 
使用情况

不能单独使用,

通常与try...catch搭配使用

能够单独使用
编译   对方法中可能出现的异常进行捕获
运行 抛出异常实例 只有出现异常时才抛出
     

try...catch...finally

如果以下部分中出现return,其返回结果将是如何?

public static int method(int a,int b) {

  try {
    int c = a/b; //1
    return 1; //2
  } catch (Exception e) {
    System.out.println("catch"); //3
    return 2; //4
  } finally {
    System.out.println("finally"); //5
    return 3; //6
  }
}

try、catch中任一部分含有return:首先执行try\catch语句中的内容,缓存语句中return的值,最后执行finally中的内容。

因此,

①当finally中return语句时,执行顺序为

· 没有异常时:

//执行顺序 1 → 2(缓存return的值)→5 → 6 (更改了return的值),因此打印结果为
finally
3

· 有异常时:

//执行顺序为:3 → 4(缓存return的值为2) → 5 → 6(更改缓存的return值为3)
catch
finally
3

② 当finally没有return语句时

· 没有异常时:

//执行顺序:1 → 2(缓存return的值)→ 5 → 返回return的值
finally
1

· 有异常时

//执行顺序:3 → 4(缓存return的值)→ 5 → 返回return的值
finally
2

如果返回的不是基本数据类型,可参照这篇文章:https://blog.csdn.net/zoujian1993/article/details/45362931

try..catch..中涉及运算:https://www.cnblogs.com/superFish2016/p/6687549.html

涉及的堆和栈:https://blog.csdn.net/pt666/article/details/70876410/

【Java】异常 —— throw, throws, try catch 相关内容的更多相关文章

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

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

  2. JAVA 异常 throw 与 throws

    最近一直throw和throw new …… 获取头部罢工,要彻底生气清楚这件事,他对这个思想精华收集了很多网友.这里摘录. throws全部异常信息throw则是指抛出的一个详细的异常类型.通常在一 ...

  3. Java throw throws try...catch区别

    java里的异常多种多样,这是一种非常有用的机制,它能帮助我们处理那些我们未知的错误,在java里,关于异常的有throw throws,还有一个try catch 程序块.接下来我们挨个看看这几个的 ...

  4. 异常处理(throw,throws,try,catch,finally)

    一.异常 1.定义:程序在运行时出现的不正确的情况. 2.由来:问题也是生活中的事物,也可以被Java描述,并被封装成对象. 其实就是Java对不正常情况进行描述后的对象体现. 3.划分:Java对于 ...

  5. throw throws try catch finally return

    throw throw 语句用于抛出异常,例如 throw new EOFException().   throws 当使用throw 语句抛出checked 异常后,可以不用捕获异常并处理,而是使用 ...

  6. final finalize finally throw throws try catch

    什么是finalize()方法 finalize()方法什么时候被调用 参见网址 析构函数(finalization)的目的是什么 final 和 finalize 的区别 final以下参见网址 f ...

  7. java 异常 throw

    throw UnsupportedOperationException(); //没有支持的操作NoSuchElementException(); //没有这样的元素

  8. Java 异常分析

    Java 异常分析 本文是对以下内容的分析: Java异常设计 Java 异常分类 Java异常可以告诉什么问题 Java异常处理最佳实践 Java Exception 是为了处理应用程序的异常行为而 ...

  9. Java异常01——捕获和抛出异常

    捕获和抛出异常 异常处理五个关键字 try , catch , finally , throw , throws try catch finally(快捷键:选中要要监控的代码语句 快捷键: ctrl ...

随机推荐

  1. awk, sed, xargs, bash

    http://ryanstutorials.net/   awk: split($1, arr, “\t”)   sed: sed -n '42p' file sed '42d' file sed ' ...

  2. [原创]II7/IIS8屏蔽YisouSpider蜘蛛

    来源:http://www.0531s.com/content-46-1927014-1.html YisouSpider蜘蛛抓取网页能够导致CPU暴涨,影响其他蜘蛛和用户的访问,多次实验后,发现II ...

  3. stm32串口学习(二)

    今天继续学习stm32的串口编程(利用库函数).上次我们说了串口的发送,这次我们说接收. 接收可以用查询的方法,也可以用中断.显然,工程中多用中断的方式,那么就来看看中断接收. 代码其实很简单,基本的 ...

  4. C# 获取格式

    1. 身份证日期 DateTime.ParseExact((IDCard.Substring(6, 8)), "yyyyMMdd", System.Globalization.Cu ...

  5. Asp.Net MVC 5 Razor 视图 未将对象引用到实例

    未将对象引用到实例的错误居然指向了@{Leyout=“..此处略,核实路径无误”}. 最后发现原来是在一个<select .. name="@Model.Category"& ...

  6. html meta标签实现页面跳转

    refresh用于刷新与跳转(重定向)页面 refresh出现在http-equiv属性中,使用content属性表示刷新或跳转的开始时间与跳转的网址 <!DOCTYPE html> &l ...

  7. python列表生成式、列表推导式

    运用列表生成式,可以快速生成list,可以通过一个list推导出另一个list,而代码却十分简洁. 格式 [x for x in 内容] [x for x in 内容 if 条件] 1:要把生成的元素 ...

  8. MyEclipse内存溢出问题

    今天碰到的问题,先记录下来 Console报错: Java.lang.OutOfMemoryError: PermGen space 跟着步骤: 在这里加入:-Xms800m -Xmx800m -XX ...

  9. 《深入理解Java7核心技术与最佳实践》读书笔记(1.1)---Project Coin介绍

    OpenJDK中的Coin项目(Project Coin)的目的就是为了收集对Java语言的语法进行增强的建议.在Coin项目开始之初,曾经广泛地向社区征求提议.在短短的一个月时间内就收到将近70条提 ...

  10. Office加载项对Excel进行读写操作

    转载自我的个人主页 前言 在开发ExcelWeb插件的时候,一大亮点就是可以在web项目中操作Excel,读取Excel的内容,也可以将服务端的数据写入的 Excel中,大大方便的用户使用Excel, ...