Houzhihua1228 2016-07-30 08:39 采纳率: 100%
浏览 2153
已采纳

为什么我不可以用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;
}
}

  • 写回答

4条回答

  • 毕小宝 博客专家认证 2016-07-30 22:46
    关注

    关于异常处理的几点:
    1)异常try中使用的变量,如果需要在catch或者finally分支中使用,必须是try之前定义的变量。
    2)如果一个方法中,有好几个操作都会有异常,可以都放在try方法体重,在catch分支中一起捕获。
    3)代码逻辑之间独立的,而且后面的逻辑依赖前面的操作,可以分批处理try-catch,有关联的代码放一块处理,

     //第一部分
     try{
    
     catch(){
     }
    
     //第二部分逻辑
      try{
    
     catch(){
     }
    
     ....
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 Qt下使用tcp获取数据的详细操作
  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区
  • ¥20 jupyter保存图像功能的实现
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
  • ¥15 NAO机器人的录音程序保存问题
  • ¥15 C#读写EXCEL文件,不同编译
  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键