为什么我不可以用try/catch处理这个异常
import java.io.*;import java.util.*;
public class Day_23_2 {
//private static final Object x = null;
public static void main(String[] args)throws Exception {
Emp_man1 em=new Emp_man1();
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
while(true){
System.out.println("请选择所需要的功能!");
System.out.println("1.添加成员!");
System.out.println("2.查看成员!");
System.out.println("3.查看所有!");
System.out.println("4.修改工资!");
System.out.println("5.删除成员!");
System.out.println("6.退出系统!");
//try {
String x=br.readLine();
//} catch (IOException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
//}
if(x.equals("1")){
System.out.print("请输入工号!");
//try { 为什么这里用不了try/catch?
String emp_no=br.readLine();
//} catch (IOException e) { 用了try/catch的话emp_no就不会被下面的Emp1引用。
// TODO Auto-generated catch block
//e.printStackTrace();
//}
System.out.print("请输入名字!");
//try {
String name=br.readLine();
//} catch (IOException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
//}
System.out.print("请输入年龄!");
//try {
float age=Float.parseFloat(br.readLine());
//} catch (NumberFormatException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
//} catch (IOException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
//}
System.out.print("请输入工资!");
//try {
float sal=Float.parseFloat(br.readLine());
//} catch (NumberFormatException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
//} catch (IOException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
//}
Emp1 emp1=new Emp1(emp_no, name, age, sal);
em.add_man(emp_no, emp1);;
}else if(x.equals("2")){
System.out.print("请输入工号!");
//try {
String emp_no=br.readLine();
//} catch (IOException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
//}
em.show_info(emp_no);
}else if(x.equals("3")){
em.show_all();
}else if(x.equals("4")){
System.out.println("请输入工号!");
String emp_no=br.readLine();
System.out.println("请输入新工资");
float newsal=Float.parseFloat(br.readLine());
em.change_sal(emp_no, newsal);
}else if(x.equals("5")){
System.out.println("请输入工号!");
String emp_no=br.readLine();
em.del_emp(emp_no);
}else if(x.equals("6")){
System.exit(0);
}
}
}
}
class Emp_man1{
Hashtable ht=null;
public Emp_man1(){
ht=new Hashtable();
}
public void add_man(String emp_no,Emp1 emp1){
ht.put(emp_no, emp1);
}
public void show_info(String emp_no){
Emp1 emp1=ht.get(emp_no);
if(ht.containsKey(emp_no));
System.out.println("工号是:"+emp1.getEmp_no());
System.out.println("名字是:"+emp1.getName());
System.out.println("年龄是:"+emp1.getAge());
System.out.println("工资是:"+emp1.getSal());
}
public void show_all(){
Iterator it=ht.keySet().iterator();
if(it.hasNext()){
String emp_no =it.next().toString();
Emp1 emp1=ht.get(emp_no);
System.out.print("工号是:"+emp1.getEmp_no()+" ");
System.out.print("名字是:"+emp1.getName()+" ");
System.out.print("年龄是:"+emp1.getAge()+" ");
System.out.print("工资是:"+emp1.getSal());
}
}
public void change_sal(String emp_no,float newsal){
Emp1 emp1=ht.get(emp_no);
emp1.setSal(newsal);
}
public void del_emp(String emp_no){
ht.remove(emp_no);
}
}
class Emp1{
private String emp_no;
private String name;
private float age;
private float sal;
public Emp1(String emp_no,String name,float age,float sal){
this.emp_no=emp_no;this.name=name;this.age=age;this.sal=sal;
}
public String getEmp_no() {
return emp_no;
}
public void setEmp_no(String emp_no) {
this.emp_no = emp_no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getAge() {
return age;
}
public void setAge(float age) {
this.age = age;
}
public float getSal() {
return sal;
}
public void setSal(float sal) {
this.sal = sal;
}
}
关于异常处理的几点:
1)异常try中使用的变量,如果需要在catch或者finally分支中使用,必须是try之前定义的变量。
2)如果一个方法中,有好几个操作都会有异常,可以都放在try方法体重,在catch分支中一起捕获。
3)代码逻辑之间独立的,而且后面的逻辑依赖前面的操作,可以分批处理try-catch,有关联的代码放一块处理,
//第一部分
try{
catch(){
}
//第二部分逻辑
try{
catch(){
}
....
try catch 里面定义的变量是局部变量,只在try catch里面有效
那这个 br.readLine()的异常应该怎么处理 求解答 谢谢!
异常处理的基本思想是简化程序的错误代码,为程序键壮性提供一个标准检测机制。
也许我们已经使用过异常,但是你会是一种习惯吗,不要老是想着当我打开一个文件的时候才用异常判断一下,我知道对你来说你喜欢用return value或者是print error message来做,你想过这样做会导致Memory Leak,系统退出,代码重复/难读,垃圾一堆…..吗?现在的软件已经是n*365*24小时的......
答案就在这里:C++处理异常 try,catch,throw
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。