java extends runtimeexception_Java中RuntimeException和Exception的区别

java extends runtimeexception_Java中RuntimeException和Exception的区别1.引入RuntimeExceptionpublicclassRuntimeException{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubStringstr=”123″;inttemp=Integer.parseInt(str);System.out.println(temp*te…

大家好,又见面了,我是你们的朋友全栈君。

1. 引入RuntimeException

public class RuntimeException {

public static void main(String[] args) {

// TODO Auto-generated method stub

String str=”123″;

int temp=Integer.parseInt(str);

System.out.println(temp*temp);

}

}

产看parseInt方法的源代码如下:

public static int parseInt(String s) throws NumberFormatException {

return parseInt(s,10);

}

我们发现这个方法中抛出了NumberFormatException异常,但是在上面的代码中我们没有找到try…catch来处理,这是为什么呢。按照我们异常处理的知识,如果一个方法通过throws抛出了异常,那么可以在抛出异常的方法中不适用try…catch,但是在调用这个方法的地方必须有try…catch来处理。

2. 下面来观察NumberFormatException类的继承关系:

35016461948e745cf5a5af25b1701c1c.png

从上图我们可以发现NumberFormatException是RuntimeException的子类,那么这就需要我们清楚Exception和RuntimeException的概念:

Exception:在程序中必须使用try…catch进行处理。

RuntimeException:可以不使用try…catch进行处理,但是如果有异常产生,则异常将由JVM进行处理。

对于RuntimeException的子类最好也使用异常处理机制。虽然RuntimeException的异常可以不使用try…catch进行处理,但是如果一旦发生异常,则肯定会导致程序中断执行,所以,为了保证程序再出错后依然可以执行,在开发代码时最好使用try…catch的异常处理机制进行处理。

3.自定义异常

下面给出一个自定义异常的实例:

class MyException extends Exception{

public MyException(String msg){

super(msg);

}

}

public class DefaultException {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

try{

throw new MyException(“自定义异常”);

}catch(Exception e){

System.err.println(e);// }

}

}

输出结果为:

MyException: 自定义异常

4. 常见的RuntimeException

RuntimeException是开发中最容易遇到的,下面列举一下常见的RuntimeException:

1、NullPointerException:见的最多了,其实很简单,一般都是在null对象上调用方法了。

String s=null;

boolean eq=s.equals(“”); // NullPointerException

public int getNumber(String str){

if(str.equals(“A”)) return 1;

else if(str.equals(“B”)) return 2;

}

这个方法就有可能抛出NullPointerException,我建议你主动抛出异常,因为代码一多,你可能又晕了。

public int getNumber(String str) {

if(str==null) throw new NullPointerException(“参数不能为空”);

if(str.equals(“A”)) return 1;

else if(str.equals(“B”)) return 2;

}

2、NumberFormatException:继承IllegalArgumentException,字符串转换为数字时出现。比如int i= Integer.parseInt(“ab3”);

3、ArrayIndexOutOfBoundsException:数组越界。比如 int[] a=new int[3]; int b=a[3];

4、StringIndexOutOfBoundsException:字符串越界。比如 String s=”hello”; char c=s.chatAt(6);

5、ClassCastException:类型转换错误。比如 Object obj=new Object(); String s=(String)obj;

6、UnsupportedOperationException:该操作不被支持。如果我们希望不支持这个方法,可以抛出这个异常。既然不支持还要这个干吗?有可能子类中不想支持父类中有的方法,可以直接抛出这个异常。

7、ArithmeticException:算术错误,典型的就是0作为除数的时候。

8、IllegalArgumentException:非法参数,在把字符串转换成数字的时候经常出现的一个异常,我们可以在自己的程序中好好利用这个异常。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/161500.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Vue上传图片_解调的三种方式

    Vue上传图片_解调的三种方式项目中需要上传图片可谓是经常遇到的需求,本文将介绍3种不同的图片上传方式,在这总结分享一下,有什么建议或者意见,请大家踊跃提出来。没有业务场景的功能都是耍流氓,那么我们先来模拟一个需要实现的业务场景。假设我们要做一个后台系统添加商品的页面,有一些商品名称、信息等字段,还有需要上传商品轮播图的需求。我们就以Vue、Element-ui,封装组件为例子聊聊如何实现这个功能。其他框架或者不用框架…

    2022年10月16日
  • WPF基础五:UI①布局元素WrapPanel[通俗易懂]

    WPF基础五:UI①布局元素WrapPanel[通俗易懂]目录WrapPanelWrapPanel类XAML范例:C#代码WrapPanel按从左到右的顺序位置定位子元素,在包含框的边缘处将内容切换到下一行。后续排序按照从上至下或从右至左的顺序进行,具体取决于Orientation属性的值。WrapPanel包含UIElement对象的集合,这些对象位于Children属性中。WrapPanel的所有子元素都接收ItemWidth与ItemHeight大小相乘的布局分区。WrapPanel类名称…

  • Web渗透测试工具[通俗易懂]

    Web渗透测试工具[通俗易懂]一、介绍是用于攻击web应用程序的集成平台。它包含了许多Burp工具,这些不同的burp工具通过协同工作,有效的分享信息,支持以某种工具中的信息为基础供另一种工具使用的方式发起攻击。这些工具设计了许多接口,以促进加快攻击应用程序的过程。所有的工具都共享一个能处理并显示HTTP消息,持久性,认证,代理,日志,警报的一个强大的可扩展的框架。它主要用来做安全性渗透测试。二、下载安装 2.1地址 链接:https://pan.baidu.com/s/1xhQ…

  • 文本相似度度量_文本相似度分析

    文本相似度度量_文本相似度分析文本相似度度量就是衡量两个文本相似度的算法。主要包括两个步骤:将文本表示为向量(文本表示);衡量两个向量的相似度(相似度度量)。1文本表示文本表示也包括两部分:文本切分粒度(按什么粒度切分得到文本特征),如何构造特征(如何将文本特征转化成数值特征)。1.1文本切分粒度可以按照字,词,n-gram对文本进行切分;当文本是长文本时,也可以利用主题模型提取关键词,来减少词的维度。1.2文本特征构建特征构建就是如何将词袋模型中的词转化成向量表示。可以用one-hot,对应位置的权重可以是TF或者.

    2022年10月26日
  • py2app打包「建议收藏」

    安装cndevOE运行时依赖的库:1.安装python运行环境下载python-2.5.1-macosx.dmg,安装。打开终端,输入python看到version是为2.5.1,安装成功。2.安装wxPython下载wxPython2.8-osx-unicode-2.8.9.1-universal-py2.5.dmg,安装。打开终端,输入python,在shell下输入:im

  • SpringBoot之SpringApplication初始化

    SpringBoot之SpringApplication初始化SpringApplication的初始化之前已经分析了引导类上的@SpringBootApplication注解,接下来继续分析main方法,只调用了一句SpringApplication.run(SpringbootApplication.class,args),就启动了web容器,我们看看run方法里面做了什么publicstaticConfigurableApplicationContextrun(Class<?>[]primarySources,String[]ar

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号