异常的概念  任何的异常都是Throwable类(为何不是接口??),并且在它之下包含两个子类Error / Exception,而Error仅在当在Java虚拟机中发生动态连接失败或其它的定位失败的时候,Java虚拟机抛出一个Error对象.典型的简易程序不捕获或抛出Errors对象,你可能永远不会遇到需要实例化Error的应用,那就让我们关心一下Exception. Exception中比较重要的就是RuntimeException(运行时异常)-可能在执行方法期间抛出但未被捕获的 Runt…
马克-to-win:checked和unchecked异常区别:结论就是:1)RuntimeException和他的子类都是unchecked异 常.其他的都是checked异常.马克-to-win:2)在编译阶段,编译器会检查每一个方法,看是否方法里面抛出了checked异常.假设抛出了 checked异常,那个方法里必须加catch,或者加throws语句(下一节讲解),否则的话编译器会报错.马克-to- win:unchecked异常就没这规矩. 更多内容请见原文,文章转载自 :https…
运行时异常在运行期间才能被检查出来,一般运行期异常不需要处理.也称为unchecked异常.Checked异常在编译时就能确定,Checked异常需要自己处理. checked 异常也就是我们经常遇到的IO异常,以及SQL异常都是这种异常.对于这种异常,JAVA编译器强制要求我们必需对出现的这些异常进行catch.所以,面对这种异常不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常. runtime exception,也称运行时异常,我们可以不处理.当出现这样的异常时,总是由虚拟…
首先,java的异常分为Error和Exception.这两类都是接口Throwable的子类.Error及Exception及其子类之间的关系,大致可以用下图简述. 注意事项: 1. Error仅在java的虚拟机中发生,用户无需在程序中捕捉或者抛出Error. 2. Exception分为一般的Exception和RuntimeException两类.这里有点让人觉得别扭的是RuntimeException(Unchecked)继承于Exception(Checked)的父类. PS: ch…
1.对基元类型执行的许多算术运算都可能造成溢出,有如下代码: Byte b=100; b=(Byte)(b+200); 简单的解读上面的代码: 第一步,将所有的操作数都扩大至32位或者64位(根据操作系统的位数决定).所以b和200(这两个值都不超过32位),首先转换成32位(假设当前操作系统是32位),然后加到一起.结果就是一个32位值(十进制300或者十六进制12C).注意此时的值为一个32位的操作数,必须转型为一个byte.C#不会隐式地执行这个转型操作,这正是第二行代码需要强制转换为By…
首先要知道int型在c#中是一个32位的数.由此可以知道int型的取值范围是(-2147483648~2147483647)当要使用int的最小值或者是最大值的时候,可以使用int.MinValue和int.MaxValue这两个属性. 这里我们要讨论的是int型数溢出,事实上当在int型中的最大+1 就会变成最小值.当我们希望这个int值不会超过限制时,可以通过手动启用溢出检查功能. 在Visual Studio中是允许设置项目属性来启用或者禁止溢出检查的.解决方案资源管理器------>右击…
有两种类型的异常:一种是checked异常一种是unchecked异常,在这篇文章中我们将利用实例来学习这两种异常,checked的异常和unchecked异常最大的区别就是checked去唱是在编译时检查的而unchecked异常是在运行时检查的. 什么是checked异常呢? checked异常在编译时检查,这意味着如果一个方法抛出checked异常,那么它应该使用try-catch块或者使用throws关键字来处理这个异常,否则的话程序会报编译错误,命名为checked异常是因为是在编译时…
查Spring事务管理时看到一句话: Spring使用声明式事务处理,默认情况下,如果被注解的数据库操作方法中发生了unchecked异常,所有的数据库操作将rollback:如果发生的异常是checked异常,默认情况下数据库操作还是会提交的. 那么,什么是Checked Exception & Unchecked Exception ? Unchecked Exception: a. 指的是程序的瑕疵或逻辑错误,并且在运行时无法恢复. b. 包括Error与RuntimeException及…
1.作用 checked和unchecked运算符用于CLR(公共语言运行时)强制对它们所作用的代码块,进行(不进行)代码溢出检测 2.示例说明 有代码如下: static void Main(string[] args) { ; b++; Console.WriteLine(b.ToString()); } byte数据类型只能包含0~255的数,所以递增的值就会发生溢出.CLR如何处理这个溢出,取决于许多因素,包括编译器选项,很多时候可能会得不到我们的想要的溢出报错. So,C#提供了che…
对基元类型执行的许多算术运算都可能造成溢出: Byte b = ; b = (Byte) (b + ); // b 现在包含 44(或者十六进制值 2C) 重要提示:执行上述算术运算时,第一步要求所有操作数都扩大为 32 位值(或者 64 位值,如果任何操作数需要超过 32 位来表示的话).所以, b 和 200(这两个值都不超过 32 位) 首先转换成 32 位值,然后加到一起.结果是一个 32 位值(十进制 300,或十六进制 12C).该值在存回变量 b 之前,必须转型为一个 Byte.C…