今天在做一个将String转换为Integer的功能时,发现Integer.parseInte()会抛出异常NumberFormatException.

函数Integer.parseInt(String)定义

 public static int parseInt(String s)
throws NumberFormatException

测试代码:

 public class Test
{
public static void main(String[] args)
{
Integer num = Integer.parseInt("ff");
System.out.println(num);
}
}

我们知道,所有的会抛出异常的地方都需要try catch 捕获,或者使用throws继续向上抛出。那么为什么上面的代码会通过编译呢?原来Java里面有Exception和RuntimeException这两个类。RuntimeException是Excetpion的子类。如果一个某一个异常是RuntimeException的子类而不是Exception的直接子类,那么我们可以不用显示的try catch捕获,而是在发生异常的时候抛给JVM捕获。当然我们也可以写上try catch来处理,不交给JVM。如下面的代码:

 public class Test
{
public static void main(String[] args)
{
try
{
Integer num = Integer.parseInt("ff");
System.out.println(num);
}catch(Exception e)
{
System.out.println("程序出现了异常!");
}
}
}

关于Java中的异常,还有一些常见问题,现在罗列在下面:

1) Exception类关系

Throwable是所有异常的父类。如常见的:NullPointerException和ClassNotFoundException

2)Error和Exception

Throwable下有两个子类,一个是Exception,另一个是Error。那么Error和Exception有什么区别呢?

Error:是指JVM错误。这个是我们自己写程序中不会遇到的,是JVM运行过程中自己抛出的异常。这个不需要程序员过多的关注。

Exception:所有用户可以处理的异常的父类。也就是说,我们写代码的过程中可能会遇到的所有的异常的父类就是Exception

3)Exception和RuntimeException

这就是本文一开始讨论的话题。Exception是RuntimeException的父类。程序员在写代码的时候,如果遇到抛出的是RuntimeException,则可以根据情况选择是否用try catch或者throws 对异常进行处理。如果遇到的异常是Exception子类,但又不是RuntimeException子类,那么程序中必须显示的try catch或者throws 进行处理。

4)throw与throws的区别

throw指的是我们程序遇到异常的时候,在当前上下文中不处理。说得更狭隘一点,比如我们在一个函数中,如果有异常,我们直接用throws抛出,交给函数调用处进行处理,而不在本函数中处理。

throws指的是如果函数中有用throw抛出异常,需要在函数声明的末尾加上throws语句,表明当前函数会抛出异常,从而通知函数的调用出进行显式处理。throws和throw是配合使用的。如下面的代码:

 public class Test
{
public static void main(String[] args)
{
doSomething();
} public static void doSomething()throws Exception
{
Integer num = Integer.parseInt("ff");
System.out.println(num);
}
}

上面的代码无法通过编译,因为在doSomthing()里面抛出了异常,需要在Main函数中处理。Main函数要么加上try catch 语句,要么将此异常继续向上抛出,交给JVM处理。但一般不这么做。我们总希望程序能正确的运行并退出。下面是正确的处理异常代码:

 public class Test
{
public static void main(String[] args)
{
try
{
doSomething();
}
catch(Exception e)
{
System.out.println("doSomething函数出现了异常!异常信息如下:");
e.printStackTrace();
}
System.out.println("Main函数正常退出!");
} public static void doSomething()throws Exception
{
Integer num = Integer.parseInt("ff");
System.out.println(num);
}
}

Java中的异常-Throwable-Error-Exception-RuntimeExcetpion-throw-throws-try catch的更多相关文章

  1. Java 中的异常和处理详解

    Java 中的异常和处理详解 原文出处: 代码钢琴家 简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误 ...

  2. Java中的异常详解

    一.异常定义 阻止当前方法或作用域继续执行的问题,称为异常 二.异常分析      所有不正常类都继承Throwable类,这个类主要有两个子类Error类和Exception类.Error指系统错误 ...

  3. Java中的异常和处理详解

    简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?. ...

  4. Java中的异常简介

    Java中异常的分类 Java中的异常机制是针对正常运行程序的一个必要补充,一般来说没有加入异常机制,程序也能正常运营,但是,由于入参.程序逻辑的严谨度,总会有期望之外的结果生成,因此加入异常机制的补 ...

  5. java中的异常类

    Java中的异常: 1. Throwable是所有异常的根,java.lang.Throwable Throwable包含了错误(Error)和异常(Exception),Exception又包含了运 ...

  6. Java 中的异常

    前段时间集合的整理真的是给我搞得心力交瘁啊,现在可以整理一些稍微简单一点的,搭配学习 ~ 突然想到一个问题,这些东西我之前就整理过,现在再次整理有什么区别嘛?我就自问自答一下,可能我再次整理会看到不一 ...

  7. Java 中的异常和处理详解(转载)

    原文出处: 代码钢琴家 简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函 ...

  8. Java中的异常和处理详解(转发:https://www.cnblogs.com/lulipro/p/7504267.html)

    简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?. ...

  9. java中的异常 try catch

    1.学习异常的原因?      如果没有异常处理机制,那么程序的一点小问题,都会导致[程序终止运行].实际开发中显然是不可能的,所以异常对于程序来说是非常重要的.     2.处理异常的方式:   A ...

随机推荐

  1. 在你决定从事iOS开发前需要清楚的几个问题

    作者:David McGraw  翻译:丁丁(jackiehoo) 原文:http://www.xmcgraw.com/what-you-need-to-know-to-start-learning- ...

  2. 拿到新机器,进行初始化和部署Nginx的过程

    1. 在/etc/ansbile/hosts中添加主机init 2. 在sysinit.yml中修改要初始化的机器:   hosts: init 3. 设置不检查key      export ANS ...

  3. 个人开发者做一款Android App需要知道的事情

    个人开发者做一款Android App需要知道的事情 在大学时, 自己是学计算机专业的,而且还和老师一起做过一年半的项目. 有时候是不是有这样的想法,做一个自己的网站.但一直未付诸行动.2012年时, ...

  4. javascript笔记7-事件

    主要讲事件流.事件捕获.事件冒泡.事件处理程序.事件属性.事件类型.内存和优化等. 由于本文已经在微信订阅号上发布,为了防止原创性冲突检测,因此本文在此处已经删除. 详细请扫描订阅号二维码,查看历史信 ...

  5. 进程间通信IPC:消息队列,信号量,共享内存

    2015.3.4星期三 阴天 进程间通信:IPC 文件对象:记录文件描述符,文件开关等 IPC标示符:系统全局的流水号两个进程要通信,打开的是唯一的对象进行通讯,通过key操作 XSI IPC:消息队 ...

  6. Linux平台屏幕录像工具RecordMyDesktop

    如果你把Linux桌面效果自定义得很漂亮,是不是很想录下来和其他人一起分享呢?RecordMyDesktop完全满足需要,我期待这么一个软件很久了,以前也一直没有找到合适的. 以后每次发Ubuntu的 ...

  7. RBL开发笔记三

    2014-08-26 20:06:24 今天就是在开发这个EPOLL来处理网络事件 封装较为健壮的EPOLL模型来处理基本的网络IO 1) 超时这个主题先没有弄 在开发EPOLL包括select/po ...

  8. 深入浅出数据分析 Head First Data Analysis Code 数据与代码

    <深入浅出数据分析>英文名为Head First Data Analysis Code, 这本书中提供了学习使用的数据和程序,原书链接由于某些原因不 能打开,这里在提供一个下载的链接.去下 ...

  9. CSS——几个最新解决方案

    一.重置默认样式 normalize.css ①不像其他CSSreset,它保存了一些有用的默认样式. ②规范了大量样式,纠正了一下bug与表现形式. ③有详细的注释解释代码的作用. 二.清除浮动 / ...

  10. 第七课 第二节,T语言流程语句(版本5.0)

    while语句 循环结构是程序中一种很重要的结构其特点是,在给定条件成立时,反复执行某程序段,直到条件不成立为止给定的条件称为循环条件,反复执行的程序段称为循环体 (注:关键字,while,end) ...