-
RuntimeException
2019-04-23 14:52:19RuntimeException首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的。教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈~我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转到教程
总结了一下JAVA中常见的几种RuntimeException,大约有如下几种:NullPointerException - 空指针引用异常
ClassCastException - 类型强制转换异常。
IllegalArgumentException - 传递非法参数异常。
ArithmeticException - 算术运算异常
ArrayStoreException - 向数组中存放与声明类型不兼容对象异常
IndexOutOfBoundsException - 下标越界异常
NegativeArraySizeException - 创建一个大小为负数的数组错误异常
NumberFormatException - 数字格式异常
SecurityException - 安全异常
UnsupportedOperationException - 不支持的操作异常常见的RuntimeException- -
RuntimeException是运行时虚拟机的错误,不能被catch
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:非法参数,在把字符串转换成数字的时候经常出现的一个异常,我们可以在自己的程序中好好利用这个异常。
我们可创建一个控制器,令其捕获所有类型的违例。具体的做法是捕获基础类违例类型Exception(也存在其他类型的基础违例,但Exception是适用于几乎所有编程活动的基础)。如下所示:
catch(Exception e) {
System.out.println("caught an exception");
}
这段代码能捕获任何违例,所以在实际使用时最好将其置于控制器列表的末尾,防止跟随在后面的任何特殊违例控制器失效。
对于程序员常用的所有违例类来说,由于Exception类是它们的基础,所以我们不会获得关于违例太多的信息,但可调用来自它的基础类Throwable的方法:
String getMessage()
获得详细的消息。
String toString()
返回对Throwable的一段简要说明,其中包括详细的消息(如果有的话)。
void printStackTrace()
void printStackTrace(PrintStream)
打印出Throwable和Throwable的调用堆栈路径。调用堆栈显示出将我们带到违例发生地点的方法调用的顺序。
第一个版本会打印出标准错误,第二个则打印出我们的选择流程。若在Windows下工作,就不能重定向标准错误。因此,我们一般愿意使用第二个版本,并将结果送给System.out;这样一来,输出就可重定向到我们希望的任何路径。
除此以外,我们还可从Throwable的基础类Object(所有对象的基础类型)获得另外一些方法。对于违例控制来说,其中一个可能有用的是getClass(),它的作用是返回一个对象,用它代表这个对象的类。我们可依次用getName()或toString()查询这个Class类的名字。亦可对Class对象进行一些复杂的操作,尽管那些操作在违例控制中是不必要的。本章稍后还会详细讲述Class对象。
下面是一个特殊的例子,它展示了Exception方法的使用(若执行该程序遇到困难,请参考第3章3.1.2小节“赋值”):
//: ExceptionMethods.Java
// Demonstrating the Exception Methods
package c09;
public class ExceptionMethods {
public static void main(String[] args) {
try {
throw new Exception("Here's my Exception");
} catch(Exception e) {
System.out.println("Caught Exception");
System.out.println(
"e.getMessage(): " + e.getMessage());
System.out.println(
"e.toString(): " + e.toString());
System.out.println("e.printStackTrace():");
e.printStackTrace();
}
}
} ///:~
该程序输出如下:
Caught Exception
e.getMessage(): Here's my Exception
e.toString(): java.lang.Exception: Here's my Exception
e.printStackTrace():
java.lang.Exception: Here's my Exception
at ExceptionMethods.main
可以看到,该方法连续提供了大量信息——每类信息都是前一类信息的一个子集。本章的第一个例子是:
if(t == null)
throw new NullPointerException();
看起来似乎在传递进入一个方法的每个句柄中都必须检查null(因为不知道调用者是否已传递了一个有效的句柄),这无疑是相当可怕的。但幸运的是,我们根本不必这样做——它属于Java进行的标准运行期检查的一部分。若对一个空句柄发出了调用,Java会自动产生一个NullPointerException违例。所以上述代码在任何情况下都是多余的。
这个类别里含有一系列违例类型。它们全部由Java自动生成,毋需我们亲自动手把它们包含到自己的违例规范里。最方便的是,通过将它们置入单独一个名为RuntimeException的基础类下面,它们全部组合到一起。这是一个很好的继承例子:它建立了一系列具有某种共通性的类型,都具有某些共通的特征与行为。此外,我们没必要专门写一个违例规范,指出一个方法可能会“掷”出一个RuntimeException,因为已经假定可能出现那种情况。由于它们用于指出编程中的错误,所以几乎永远不必专门捕获一个“运行期违例”——RuntimeException——它在默认情况下会自动得到处理。若必须检查RuntimeException,我们的代码就会变得相当繁复。在我们自己的包里,可选择“掷”出一部分RuntimeException。
如果不捕获这些违例,又会出现什么情况呢?由于编译器并不强制违例规范捕获它们,所以假如不捕获的话,一个RuntimeException可能过滤掉我们到达main()方法的所有途径。为体会此时发生的事情,请试试下面这个例子:
//: NeverCaught.java
// Ignoring RuntimeExceptions
public class NeverCaught {
static void f() {
throw new RuntimeException("From f()");
}
static void g() {
f();
}
public static void main(String[] args) {
g();
}
} ///:~
大家已经看到,一个RuntimeException(或者从它继承的任何东西)属于一种特殊情况,因为编译器不要求为这些类型指定违例规范。
输出如下:
java.lang.RuntimeException: From f()
at NeverCaught.f(NeverCaught.java:9)
at NeverCaught.g(NeverCaught.java:12)
at NeverCaught.main(NeverCaught.java:15)
所以答案就是:假若一个RuntimeException获得到达main()的所有途径,同时不被捕获,那么当程序退出时,会为那个违例调用printStackTrace()。
注意也许能在自己的代码中仅忽略RuntimeException,因为编译器已正确实行了其他所有控制。因为RuntimeException在此时代表一个编程错误:
(1) 一个我们不能捕获的错误(例如,由客户程序员接收传递给自己方法的一个空句柄)。
(2) 作为一名程序员,一个应在自己的代码中检查的错误(如ArrayIndexOutOfBoundException,此时应注意数组的大小)。
可以看出,最好的做法是在这种情况下违例,因为它们有助于程序的调试。
另外一个有趣的地方是,我们不可将Java违例划分为单一用途的工具。的确,它们设计用于控制那些讨厌的运行期错误——由代码控制范围之外的其他力量产生。但是,它也特别有助于调试某些特殊类型的编程错误,那些是编译器侦测不到的。覆盖一个方法时,只能产生已在方法的基础类版本中定义的违例。这是一个重要的限制,因为它意味着与基础类协同工作的代码也会自动应用于从基础类衍生的任何对象(当然,这属于基本的OOP概念),其中包括违例。
-
runtimeException
2018-07-17 17:55:43RuntimeException和Exception区别 1.java将所有的错误封装为一个对象,其根本父类为Throwable, Throwable有两个子类:Error和Exception。 2.Error是Throwable 的子类,用于指示合理的应用程序不应该试图捕获的...RuntimeException和Exception区别
1.java将所有的错误封装为一个对象,其根本父类为Throwable, Throwable有两个子类:Error和Exception。2.Error是Throwable 的子类,用于指示合理的应用程序不应该试图捕获的严重问题。大多数这样的错误都是异常条件。虽然 ThreadDeath 错误是一个“正规”的条件,但它也是 Error 的子类,因为大多数应用程序都不应该试图捕获它。在执行该方法期间,无需在其 throws 子句中声明可能抛出但是未能捕获的 Error的任何子类,因为这些错误可能是再也不会发生的异常条件。
3.Exception类及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件。
4.RuntimeException是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。可能在执行方法期间抛出但未被捕获的RuntimeException 的任何子类都无需在 throws 子句中进行声明。它是Exception的子类。
5.异常的分类
Error:一般为底层的不可恢复的类;
Exception:分为未检查异常(RuntimeException)和已检查异常(非RuntimeException)。
未检查异常是因为程序员没有进行必需要的检查,因为疏忽和错误而引起的错误。几个经典的RunTimeException如下:1.java.lang.NullPointerException;
2.java.lang.ArithmaticException;
3.java.lang.ArrayIndexoutofBoundsExceptionRuntime Exception:
在定义方法时不需要声明会抛出runtime exception; 在调用这个方法时不需要捕获这个runtime exception; runtime exception是从java.lang.RuntimeException或java.lang.Error类衍生出来的。 例如:nullpointexception,IndexOutOfBoundsException就属于runtime exceptionException:
定义方法时必须声明所有可能会抛出的exception; 在调用这个方法时,必须捕获它的checked exception,不然就得把它的exception传递下去;exception是从java.lang.Exception类衍生出来的。例如:IOException,SQLException就属于ExceptionException 属于应用程序级别的异常,这类异常必须捕捉,Exception体系包括RuntimeException体系和其他非RuntimeException的体系
RuntimeException 表示系统异常,比较严重,如果出现RuntimeException,那么一定是程序员的错误
什么是unchecked异常?
即RuntimeException(运行时异常)
不需要try…catch…或throws 机制去处理的异常 -
use RuntimeException instead of non existing RunTimeException
2020-12-08 18:33:07<p>I am targetting this ...<p><code>RunTimeException</code> does not exist, use <code>RuntimeException</code> instead.</p><p>该提问来源于开源项目:sonata-project/SonataAdminBundle</p></div> -
RuntimeException与非RuntimeException的区别
2020-06-08 10:06:51RuntimeException是非检查异常。 RuntimeException是可以不去做任何处理的,直接抛给JVM。也就是可以不用try,catch去处理,可以不用throw,在方法上不用throws声明,因为JAVA所有的方法都默认throws了...- RuntimeException是非检查异常。
- RuntimeException是可以不去做任何处理的,直接抛给JVM。也就是可以不用try,catch去处理,可以不用throw,在方法上不用throws声明,因为JAVA所有的方法都默认throws了RuntimeException。
- 非RuntimeException必须被try,catch或者throw。
-
关于RuntimeException
2020-05-21 11:21:58关于RuntimeException 今天在写一个异常类的时候继承了RuntimeException,想一探究竟。 RuntimeException: 在定义方法时不需要声明会抛出runtimeException。Exception: 定义方法时必须声明所有可能会抛出的...关于RuntimeException
今天在写一个异常类的时候继承了RuntimeException,想一探究竟。
RuntimeException:
在定义方法时不需要声明会抛出runtimeException。
Exception:
定义方法时必须声明所有可能会抛出的exception。于是去查看了一翻api。
- public RuntimeException()
-
提出了一种新的
null
运行时异常的详细信息。原因是没有初始化,初始化后可通过调用 Throwable.initCause(java.lang.Throwable)。
-
- public RuntimeException(String message)
-
用指定的详细信息构造一个新的运行时异常。原因是没有初始化,初始化后可通过调用 Throwable.initCause(java.lang.Throwable)。
参数
message
的详细信息保存为以后的 Throwable.getMessage()方法检索。
-
- public RuntimeException(String message, Throwable cause)
- 用指定的详细信息构造一个新的运行时异常。
值得注意的是,与
cause
详细消息为空不自动纳入这个运行时异常的详细信息。 -
参数
message
的详细信息(这是以后的 Throwable.getMessage方法检索)。
- 用指定的详细信息构造一个新的运行时异常。
- public RuntimeException(Throwable cause)
-
提出了一种新的指定的原因和 (cause==null ? null : cause.toString())详细信息运行时异常(通常包含 cause类和详细信息)。此构造函数可用于运行时异常,多为其他throwables包装
-
- protected RuntimeException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace)
-
构建了一种新的指定详细信息,运行时异常原因,抑制启用或禁用,启用或禁用写的堆栈跟踪。
-
参数
message
-详细信息。cause
的原因。(一null
值是允许的,并指出原因是不存在的或未知的。)enableSuppression
是否抑制是启用或禁用writableStackTrace
是否应该写入堆栈跟踪
-
- public RuntimeException()
-
use \RuntimeException instead of unavailable \RunTimeException
2020-12-09 03:22:21<h3>Changelog <pre><code> markdown ### Fixed - Typo on `...<p><code>\RunTimeException</code> is not available</p><p>该提问来源于开源项目:sonata-project/SonataPageBundle</p></div> -
Java RuntimeException
2016-05-28 12:43:23Java RuntimeException -
RuntimeException源码
2015-12-24 03:41:29throw new RuntimeException("Stub!"); 几乎所有的android源码实现都有throw new RuntimeException("Stub!");这么一段代码, 我在自学android,发现看不太懂,举个简单的例子 public boolean startActivityIfNeeded... -
RuntimeException类
2017-11-14 10:03:00在Java中明确规定对于RuntimeException的异常类型可以有选择性地进行处理,如果不处理则出现异常时交给JVM默认处理。 常见的RuntimeException类型的异常有:NumberFormatException、ClassCastException、... -
RuntimeException和Exception
2020-11-19 20:08:36RuntimeException和Exception的区别 1.RuntimeException是Exception的子类; 2.Exception定义了必须处理的异常,而RuntimeException定义的异常可以选择性的进行处理。 常见的RuntimeException: ... -
RuntimeException异常
2019-07-29 18:08:18Exception有一个特殊的子类异常RuntimeException运行异常,如果在函数内部抛出此异常,函数上可以不用声明异常,编译一样通过。 如果在函数上声明了该异常,调用者可以不用进行处理,编译一样通过。之所以不在函数... -
哪些异常是RuntimeException?Sql异常属于RuntimeException吗?Spring下SQL异常事务回滚
2017-08-01 14:25:27一,为什么框架中根本没有对Exception的一般子类进行回滚配置,异常发生时,事务都进行了回滚 ,说好的只会对RuntimeException(Unchecked 非受检异常)回滚呢? 此时,我们就有必要了解一下,RuntimeException所... -
RuntimeException关键字
2018-03-31 23:36:031.RuntimeException类下面首先来观察一个程序代码,代码能够正常运行public class TestDemo{ public static void main(args[]){ int temp = Integer.parseInt("100"); } } 现在来观察一下parseInt()... -
RuntimeException和非RuntimeException
2009-04-25 11:24:10在java的异常类体系中,Error和RuntimeException是非检查型异常,其他的都是检查型异常。 所有方法都可以在不声明throws的情况下抛出RuntimeException及其子类 不可以在不声明的情况下抛出非RuntimeException简单的... -
监控RuntimeException
2016-03-13 22:17:16在线程提前终止的最主要原因就是RuntimeException,由于这些异常表示出现了某种编程错误或者其他不可修复的错误,因此它们通常不会被捕获。它们不会在调用栈中逐层传递,而是默认地在控制台中输出栈追踪信息,并终止... -
@Transactional 对RuntimeException RuntimeException IOException 各种生效情况
2020-12-14 15:01:37@Transactional 默认回滚 RuntimeException 若回滚 Exception 需指定 不加@Transactional 不会回滚 IOExcepition 加@Transactional 不会回滚 IOExcepition 指定 rollbackFor= Exception.class 回滚 IOException 嵌套... -
Exception & RunTimeException
2020-11-03 14:54:59RuntimeException是Exception类的子类,Exception类对象是Java程序处理或抛弃的对象,它有各种不同的子类分别对应于不同类型的例外。其中类RuntimeException代表运行时由Java虚拟机生成的例外,如算术运算异常 ...
-
客户端向日葵SunloginEnterprise_3.0.0.27372.exe
-
马士兵老师HashMap学习笔记
-
SaltStack Shell注入漏洞 CVE-2020-16846 漏洞复现
-
最新中文停用词.txt
-
2021.2.28 前端题
-
MySQL 备份与恢复详解(高低版本 迁移;不同字符集 相互转换;表
-
DHCP 动态主机配置服务(在Linux环境下,配置单网段或跨网段提)
-
Epplus的出坑笔记
-
MySQL 数据库权限管理(用户高级管理和精确访问控制)
-
gdal2.x生成terrain地形数据-程序及说明.7z
-
C++复试宝典.pdf
-
ansys electronic 19
-
关于pytorch语义分割二分类问题的两种做法
-
微服务运行在docker上
-
一天学完MySQL数据库
-
Codeforces Global Round 13 ABC题解
-
2016通信中级互联网真题.pdf
-
_this2.$xxxis not a function
-
request+response学习笔记
-
大数据开发之Hadoop学习6--HDFS的Shell操作