java-异常-编译时检测异常和运行时异常区别(throws和throw区别)


1 package p1.exception;
2 /*
3 * 对于角标是整数不存在,可以用角标越界表示,
4 * 对于负数为角标的情况,准备用负数角标异常来表示。
5 *
6 * 负数角标这种异常在java中并没有定义过。
7 * 那就按照java异常的创建思想,面向对象,将负数角标进行自定义描述。并封装成对象
8 *
9 * 这种自定义的问题描述成为自定义异常。
10 *
11 * 注意:如果让一个类称为异常类,必须要继承异常体系,因为只有称为异常体系的子类才有资格具有可抛性。
12 * 才可以被两个关键字所操作,throws throw
13 *
14 * 异常的分类:
15 * 1,编译时被检测异常:只要是Exception和其子类都是,除了特殊子类RuntimeException体系
16 * 这种问题一旦出现,希望在编译时就进行检测,让这种问题有对应的处理方式
17 * 这样的问题都可以针对性的处理
18 *
19 * 2,编译时不检测异常(运行时异常):就是Exception中的RuntimeException和其子类
20 * 这种问题的发生,无法让功能继续,运算无法进行,更多是因为调用者的原因导致的,或者引发了内部状态改变导致的(比如多线程时候)
21 * 那么这种问题一般不处理,直接编译通过,在运行时,让调用者调用时的程序强制停止.让调用者对代码进行修正.
22 *
23 *所以自定义异常时,要么继承Exception,要么继承RuntimeException
24 *
25 *throws 和 throw 区别
26 *
27 *1,throws使用在函数上.
28 * throw使用在函数内.
29 *2,throws抛出的是异常类,可以抛出多个,用逗号隔开.
30 * throw抛出的是异常对象.
31 *
32 */
33
34 class FuShuIndexException extends RuntimeException /*Exception*/{//可以改继承运行异常,就不会报编译错误
35 public FuShuIndexException() {
36 // TODO Auto-generated constructor stub
37 }
38
39 FuShuIndexException(String msg){
40 super(msg);
41 }
42 }
43 class Demo {
44 public static int method(int[] arr,int index) /*throws FuShuIndexException*/ {
45
46 // System.out.println(arr[index]);
47 if (arr == null) {
48 throw new NullPointerException("数组的引用不能为空");
49 }
50 if (index>=arr.length) {
51 throw new ArrayIndexOutOfBoundsException("数组的角标越界"+index);
52
53 }
54 if (index<0) {
55 throw new FuShuIndexException("角标变成负数了");
56 }
57 return arr[index];
58 }
59
60 }
61
62 public class ExceptionDemo3 {
63
64 public static void main(String[] args) /*throws FuShuIndexException*/{
65 // TODO Auto-generated method stub
66 int[] arr = new int[3];
67 // System.out.println(arr[3]);
68
69 Demo d = new Demo();
70 int num = d.method(arr,-30);
71 System.out.println("num="+num);
72 System.out.println("over");
73
74 }
75
76 }
ExceptionDemo3
java-异常-编译时检测异常和运行时异常区别(throws和throw区别)的更多相关文章
- 代码编译时JDK版本和运行时JDK版本不一致启动项目报错
java编译: java编译就是.java文件变成.class文件的过程,这个过程一般在我们常用的编译器中进行,例如Ecliplse和IDEA等:下面以IDEA举例: 执行上述编译使用的JDK版本就是 ...
- Java异常-一般异常和运行时异常的区别
Java提供了两类主要的异常:runtime exception和checked exception.checked 异常也就是我们经常遇到的IO异常,以及SQL异常都是这种异常.对于这种异常, JA ...
- 运行时异常&编译时异常
/* 异常体系: --------| Throwable 所有错误或者异常的父类 --------------| Error(错误) --------------| Exception(异常) 异常一 ...
- java泛型编译时被擦除引起多态的破坏,用 桥方法解决此类问题。(java 桥方法)
在JVM虚拟机中泛型编译的时候,会出现类型擦除.但是,在多态场景中,编译时,擦除方式会出现多态被破坏的可能. 举个栗子: A.java public class A<T> { void g ...
- in C#,编译型常量(const)和运行时常量(readonly)
readonly 关键字与 const 关键字不同. const 字段只能在该字段的声明中初始化. readonly 字段可以在声明或构造函数中初始化. 因此,根据所使用的构造函数, readonly ...
- c# 编译期常量const和运行时常量readonly
注意:const编译期常量是编译的时候就确定的,可以查看IL代码,是写死的.如果另一个程序集引用后,该程序集没有进行编译,则值不会改变. 看效果: 项目中有2个程序集: 其中:常量在这个程序集中定义并 ...
- c++ 编译时检测结构体大小的的宏定义写法
一种写法: template <bool> struct CompileAssert { }; #define COMPILE_ASSERT(expr, msg) \ typedef Co ...
- 如何解决pytorch 编译时CUDA版本与运行时CUDA版本不对应
转载请注明: 仰望高端玩家的小清新 http://www.cnblogs.com/luruiyuan/ 如何解决pytorch 编译时CUDA版本与运行时CUDA版本不对应 如果pytorch的编译时 ...
- java异常,异常处理,异常类 关键字:throws 和 throw 自定义的异常类
package cn.kecheng; import java.util.Scanner; /**异常:异常是指在程序的运行过程中所发生的不正常的情况,它会中断正在运行的程序 异常处理机制:java中 ...
随机推荐
- 【Android开发】问答机器人,聊天类App的开发制作过程记录
缘起 很久没写项目了,所以单纯的想练练手,正好看到有问答机器人的接口,想到之前也做过聊天项目,为什么不实验一下呢.当然也是简单调用接口的项目,并没有真正的完成问答的算法等等.业余项目,功能不齐全,只实 ...
- Mod Tree(hdu2815)
Mod Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- 1114. Boxes
1114. Boxes Time limit: 0.6 secondMemory limit: 64 MB N boxes are lined up in a sequence (1 ≤ N ≤ 20 ...
- Docker 与 K8S学习笔记(八)—— 自定义容器网络
我们在上一篇中介绍了Docker中三种网络,none.host和bridge,除了这三种网络,Docker还允许我们创建自定义网络,当我们要创建自定义网络时,Docker提供了三种网络驱动供我们选择: ...
- CHARACTERIZING ADVERSARIAL SUBSPACES USING LOCAL INTRINSIC DIMENSIONALITY
目录 概 主要内容 LID LID估计 算法 实验 1 2 3 4 5 Ma X, Li B, Wang Y, et al. Characterizing Adversarial Subspaces ...
- DP转LVDS方案 瑞奇达CS5211替代PS8625方案 CS5211芯片
PS8625将作为DP或eDP接收器设备出现在视频源中,并将作为LVDS显示面板的LVDS源设备.该设备是一个完全集成的解决方案,不需要外部CPU.内存.时钟基准或电压调节器.PS8625可配置为从显 ...
- IIS部署.net core项目
1.安装AspNetCoreModule模块 与ASP.NET时代不同,ASP.NET Core不再是由IIS工作进程(w3wp.exe)托管,而是使用自托管Web服务器(Kestrel)运行,中间最 ...
- rocksdb代码解析-db.h
总 这篇是对rocksdb整体功能的分析,主要着眼点是db.h文件,对rocksdb进行代码解析,若想以整体的方式了解其功能,首先就应该解析db.h文件.对于rocksdb的db.h文件来说,且不论前 ...
- Docker_创建自定义镜像(5)
生成docker镜像有两种方式 使用已有容器生成镜像 使用dockerfile生成镜像 一.使用已有容器生成镜像 1.下载centos镜像,并创建容器 2.进入容器部署python环境 centos镜 ...
- 自带排序 Array.sort()
public static void main(String[] args) { int[] aa = {1, 5, 9, 7, 3, 1, 6, 3, 47}; Arrays.sort(aa); p ...