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

那么接下来就总结吧

一、什么是异常

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

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. 搜索提示(search suggest)文献阅读

    Learning to Personalize Query Auto-Completion 样本 正例用用户的sug点击,其余是负例 特征 用户历史特征: query历史频次,候选和用户历史输入的ng ...

  2. python 之serial

    一 先按照 pywin32:pywin32是一个非常强大的Python扩展库,是Python调用Windows系统底层功能的最佳接口,不安装这个按照pyserial也没有用 二 按装pyserial ...

  3. C++计算二叉树的节点数和高度

    用struct结构体的写法: /* * description: 计算二叉树的层数和节点数 * writeby: nick * date: 2012-10-23 16:16 * */ #include ...

  4. Hash表的原理

    哈希的概念:Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩 ...

  5. pat1086. Tree Traversals Again (25)

    1086. Tree Traversals Again (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...

  6. [转].NET Core配置文件加载与DI注入配置数据

    本文转自:http://www.cnblogs.com/skig/p/6079187.html .NET Core配置文件 在以前.NET中配置文件都是以App.config / Web.config ...

  7. JS URL解析

    function urlParse(url) { try { var hostexp = /http\:\/\/([^\/]+)/; var hoststr = url.match(hostexp)[ ...

  8. <jsp:javabean>动作标签实例

    <jsp:javabean>动作标签实例 之后补齐基础知识 scope属性 该属性指定了所创建Bean实例的存取范围,省略该属性时的值为page.<jsp:useBean>标识 ...

  9. CSS列表(新闻列表、导航条)常见写法

    以下面这个UL做演示 <ul> <li><a href="#"><span>2014-4-1</span>教育</ ...

  10. Android中关于XML的一个小问题——使用XML输出“<”错误的问题

    在 XML 中,有 5 个预定义的实体引用: < < 小于 > > 大于 & & 和号 &apos; ' 单引号 " " 引号 注释 ...