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中 ...
随机推荐
- summernote富文本图片上传,增加视频上传功能、批量上传方法
Summernote 是一个简单灵活的所见即所得的 HTML 在线编辑器,基于 jQuery 和 Bootstrap 构建,支持快捷键操作,提供大量可定制的选项. 但是却只有图片上传功能,没有视频上传 ...
- JAVA获取指定日期的周一的日期
/** * 获取当前周的周一的日期 * @param date 传入当前日期 * @return */ public static Date getThisWeekMonday(Date date) ...
- 【LeetCode】1025. Divisor Game 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 找规律 动态规划 日期 题目地址:https://l ...
- 【LeetCode】825. Friends Of Appropriate Ages 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址:https://leetcode.com/problems/friends-o ...
- '2'>'10'==true? JS是如何进行隐式类型转换的?
前言 '2'>'10'返回的true,可能很多人都不是很能理解吧? 在js中,当运算符在运算时,如果两边数据不统一,CPU就无法计算,这时我们编译器会自动将运算符两边的数据做一个数据类型转换,转 ...
- ZOJ 1141:Closest Common Ancestors(LCA)
Closest Common Ancestors Time Limit: 10 Seconds Memory Limit: 32768 KB Write a program that tak ...
- CS5210完全替代AG6202|HDMI转VGA不带音频输出的芯片+原理图|替代兼容AG6202
CS5210完全替代AG6202|HDMI转VGA不带音频输出的芯片+原理图|替代兼容AG6202 安格AG6202是一个HDMI转VGA不带音频解决方案,用于实现HDMI1.4高分辨率视频转VGA转 ...
- MATLAB 设置示波器颜色和行列
设置颜色 设置行列和图例 放大缩小显示
- CSS基础-5 伪类
一.伪类 我们以a标签为例 伪类标签分为4类 1. 设置超链接默认的样式 a:link {属性:值;.....} 或者 a { 属性: 值;} 推荐使用这种方式 2 ...
- python接口自动化,从excel取param的内容太多,使用eval转换报错'EOL while scanning string literal
背景: 做接口自动化时,有个接口的参数内容很多,可以从excel中读取出来,但是在eval()进行转化时,就报错"'EOL while scanning string literal&quo ...