Java面向对象程序设计第7章1-8
Java面向对象程序设计第7章1-8
1.“程序中凡是可能出现异常的地方必须进行捕获或拋出”,这句话对吗?
不对。
异常分两类,runtime异常和非runtime异常。
- runtime异常,比如NullPointException等,这一类你不在程序里面进行try/catch,编译不会出错。
- 非runtime异常,比如SqlException等或自定义的exception,这一类在程序里不进行try/catch或throws,编译就会出错。
2.自定义一个异常类,并在程序中主动产生这个异常类对象。
class SelfGenerateException extends Exception {
SelfGenerateException(String msg) {
super(msg); //调用Exception的构造方法
}
static void throwOne() throws SelfGenerateException {
int a = 1;
if (a == 1) {
//如果a为1就认为在特定应用下存在异常,改变执行路径,抛出异常
throw new SelfGenerateException("a为1");
}
}
public static void main(String args[]) {
try {
throwOne();
} catch (SelfGenerateException e) {
e.printStackTrace();
}
}
}
结果:
SelfGenerateException: a为1
at SelfGenerateException.throwOne(test.java:10)
at SelfGenerateException.main(test.java:16)
3.借助JDK帮助,请列举发生NullPointerException异常的一些情况。
JDK解释如下:
当应用程序试图在需要对象的地方使用 null 时,抛出该异常。这种情况包括:
调用 null 对象的实例方法。
访问或修改 null 对象的字段。
将 null 作为一个数组,获得其长度。
将 null 作为一个数组,访问或修改其时间片。
将 null 作为 Throwable 值抛出。
应用程序应该抛出该类的实例来指示其他对 null 对象的非法使用。
4.不执行程序,指出下面程序的输出结果;如果将黑体代码去掉,写出输出结果;如果再将斜体代码去掉,写出输出结果。
public class test
{
public static void aMethod() throws Exception{
try{
throw new Exception();
}
//------------------黑体------------------------------------------------
catch(Exception e){
System.out.println("exception000");
}
//----------------------------------------------------------------------
//--------------------斜体-----------------------------------------------
finally{
System.out.println("exception111");
}
//---------------------------------------------------------------------------
}
public static void main(String[] args){
try{
aMethod();
}
catch(Exception e){
System.out.println("exception");
}
System.out.println("finished");
}
}
输出:
exception000
exception111
finished
去黑体输出:
exception111
exception
finished
如果再将斜体代码去掉:
Error:(4, 9) java: 'try' 不带有 'catch', 'finally' 或资源声明
就是说try不能单独存在而不带有catch或者finally声明
再去掉aMthod里的try后
输出:
exception
finished
5.不执行程序,指出下面程序的输出结果。
public class test{
public static String output ="";
public static void foo(int i){
try{
if(i==1) {throw new Exception();}
output += "1";
}
catch(Exception e){
output += "2";
return;
}
finally{output += "3";}
output += "4";
}
public static void main(String args[]){
foo(0);
foo(1);
System.out.println(test.output);
}
}
结果:13423
解释:134是foo(0)输出的,23是foo(1)输出的。foo(1)catch里return后,也会执行finally,但是finally之后的东西就不在执行了。foo(0)不会执行return语句,所以可以执行finally后面的语句
6. 编写一个程序方法,对空指针异常、除数为零异常给出出错的中文提示。当有新异常发生时,可扩展该方法中的代码进行统一处理。
public class test {
public static void main(String[] args) {
try {
String s = null;
System.out.println(s.charAt(0));//空指针异常
//System.out.println(1/0);//除零异常
} catch (NullPointerException e) {
System.out.println("空指针异常");
} catch (ArithmeticException e) {
System.out.println("计算异常");
} catch (Exception e) {
System.out.println("其他异常");
e.printStackTrace();
}
}
}
7.从屏幕输入10个数,在输入错误的情况下,给出相应的提示,并继续输人。在输入完成的情况下,找到最大最小数。
import java.util.Arrays;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr = new int[10];
int index = 0;
while (true) {
try {
arr[index] = sc.nextInt();
if(index!=9)
index++;
else{
break;
}
} catch (Exception e) {
sc.next();
System.out.println("输入类型有误,请重新输入");
}
}
Arrays.sort(arr);
System.out.println("max=" + arr[index]);
System.out.println("min=" + arr[0]);
}
}
8.阅读下面程序,TimedOutException为自定义异常,完成指定方法后面的部分。
public void method()throws TimedOutException
{
success= connect();
if(success == -1)
{
throw new TimedOutException();
}
}
Java面向对象程序设计第7章1-8的更多相关文章
- Java面向对象程序设计第14章3-8和第15章6
Java面向对象程序设计第14章3-8和第15章6 3.完成下面方法中的代码,要求建立一个缓冲区,将字节输入流中的内容转为字符串. import java.io.*; public class tes ...
- Java面向对象程序设计第9章1-9
Java面向对象程序设计第9章1-9 1. 线程和进程的联系和区别是什么? 联系: 一个进程可以包括多个线程. 区别: 进程: 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,它是系统 ...
- Java面向对象程序设计第8章3-5
Java面向对象程序设计第8章3-5 3.String类型有什么特点? 一旦赋值,便不能更改其指向的字符对象 如果更改,则会指向一个新的字符对象 不能为null 4.String什么时候进行值比较,什 ...
- Java面向对象程序设计第5章1-9
1.面向对象的主要特征是什么? 三大特征是:封装.继承和多态. 封装:是指将某事物的属性和行为包装到对象中,这个对象只对外公布需要公开的属性和行为,而这个公布也是可以有选择性的公布给其它对象. 继承: ...
- Java面向对象程序设计第6章1-12
1.this和super各有几种用法? this this 用法有三种,主要应用场合: 表示当前对象引用,常用于形参或局部变量与类的成员变 量同名的情形,使用this.成员名表示当前对象的成员 表示当 ...
- Java面向对象程序设计第15章5
5. 利用URLConnetction对象编写程序返回某网站的首页,并将首页的内容存放到文件当中. import java.net.*; import java.io.*; public class ...
- 20165220实验二《Java面向对象程序设计》
实验封面: 实验二 面向对象程序设计-1 实验要求: 参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST 参考http://www. ...
- 2017-2018-2 20165301 实验四《Java面向对象程序设计》实验报告
2017-2018-2 20165301 实验四<Java面向对象程序设计>实验报告 一.Android Stuidio的安装测试 实验要求: 参考<Java和Android开发学习 ...
- 2017-2018-2 20165207实验二《Java面向对象程序设计》实验报告
2017-2018-2 20165207实验二<Java面向对象程序设计>实验报告 课程:Java程序设计 班级:1652 姓名:李天林 学号:20165207 实验日期:2018年4月1 ...
随机推荐
- 创建ros消息时出现:Unable to load msg [planning/Num]: Cannot locate message [Num]: unknown pack.....
创建ros消息可参考创建ROS消息和ROS服务. 按照这个教程进行创建的过程中出现了如下错误: Unable to load msg [msgs/locate]: Cannot locate mess ...
- P2P四红线
P2P四红线 刘张君指出,P2P网络借贷平台是一种新兴金融业态,在鼓励其创新发展的同时,要记住四点:一是要明确这个平台的中介性质,二是要明确平台本身不得提供担保,三是不得将归集资金搞资金池,四是不得非 ...
- 《C语言深度解剖》学习笔记之函数
第6章 函数 1.编码风格 [规则6-1]每一个函数都必须有注释 [规则6-2]每个函数定义之后以及每个文件结束之后都要加若干个空行 [规则6-3]在一个函数体内,变量定义与函数语句之间要加空行 [规 ...
- oracle函数 SYS_CONTEXT(c1,c2)
[功能]返回系统c1对应的c2的值.可以使用在SQL/PLSQL中,但不可以用在并行查询或者RAC环境中 [参数] c1,'USERENV' c2,参数表,详见示例 [返回]字符串 [示例] sele ...
- vue 后期追回的属性不更新视图问题
this.$set(this.problemList[index], 'sub', []) 因为原始数组是有set,get而追加的没有,所以需要用这种方式 // 添加 this.$set(th ...
- 解锁当前XXX用户
pam_tally2 查看当前锁账户 pam_tally2 --user=XXX用户 --reset 解锁当前XXX用户
- day2_python之字符编码
一 .计算机基础知识 二.文本编辑器存取文件的原理(nodepad++,pycharm,word) #1.打开编辑器就打开了启动了一个进程,是在内存中的,所以,用编辑器编写的内容也都是存放与内存中的, ...
- 为更强大而生的开源关系型数据库来了!阿里云RDS for MySQL 8.0 正式上线!
2019年5月29日15时,阿里云RDS for MySQL 8.0正式上线,使得阿里云成为紧跟社区步伐,发布MySQL最新版本的云厂商.RDS for MySQL 8.0 产品是阿里云推出的 MyS ...
- Project Euler Problem 14-Longest Collatz sequence
记忆化搜索来一发.没想到中间会爆int #include <bits/stdc++.h> using namespace std; const int MAXN = 1000000; in ...
- phpstudy2016安装redis扩展
第一步:查看phpstudy版本 第二步:查看phpinfo信息,看Architecture所属类型. 第三步:下载redis扩展 去http://windows.php.Net/downloads/ ...