多个catch块的异常处理

时间:2016-11-19 15:05:23

标签: java exception-handling

这是我的计划。

try {
    int a = 1/0;
}
catch(Exception e) {
    system.out.println("Exception block"+e);
}
catch(ArithmeticException e) {
    system.out.println("Inside ArithmeticException block");
}
finally {
    system.out.println("Inside Finally block");
}

在上面的程序中,我有两个catch块和一个finally块。

将执行哪个catch块?因为我首先定义父catch块。这会导致错误吗?任何人都可以帮助我吗?

我假设" ArithmeticException和Finally块将被执行"

2 个答案:

答案 0 :(得分:1)

捕获Exception类不会出现任何错误。但是,不建议这样做。

在这种情况下,Exception catch块将首先执行,然后finally块将执行。

如果您希望执行ArithmeticException阻止,请在Exception catch阻止之前放置此阻止。

更新代码 -

    try{
        int a = 1/0;
    }        
    catch(ArithmeticException e){
        System.out.println("Inside ArithmeticException block");
    }
    catch(Exception e) {
        System.out.println("Exception block"+e);
    }
    finally{
        System.out.println("Inside Finally block");
    }

答案 1 :(得分:0)

捕获异常类不会给出任何错误。

在这种情况下,Exception catch块将首先执行,然后finally块将执行。

如果您希望执行ArithmeticException块,请将此块放在Exception catch块之前。

这是更新的代码

   <Window.Resources>
        <XmlDataProvider x:Key="dataGridData" XPath="Cars">
            <x:XData>
                <Cars xmlns="">
                    <Maruthi>
                        <Maruthi_Alto>
                            <Description>MINI</Description>
                        </Maruthi_Alto>
                        <Maruthi_Ciaz>
                            <Description>Sedan</Description>
                        </Maruthi_Ciaz>
                    </Maruthi>
                </Cars>
            </x:XData>
        </XmlDataProvider>
    </Window.Resources>
    <Grid>
        <DataGrid DataContext="{StaticResource dataGridData}"
                  ItemsSource="{Binding XPath=*}"
                  AutoGenerateColumns="False">
           <DataGrid.Columns>
                <DataGridTextColumn Header="Car Name" Binding="{Binding Path=Name}"/>
           </DataGrid.Columns>
        </DataGrid>
    </Grid>