开发者

Android application catching unwanted exception

开发者 https://www.devze.com 2023-03-21 17:16 出处:网络
I\'m writing a simple app which allows a user to enter their income and it deducts tax, then saves the amount in a file for future reference. The problem is that if I try to enter anything in the \'po

I'm writing a simple app which allows a user to enter their income and it deducts tax, then saves the amount in a file for future reference. The problem is that if I try to enter anything in the 'postTax' editText, it will throw the bottom exception. I'm obviously doing something stupid with my logic but can anyone see the problem?

public void onClick(View v) {
    // TODO Auto-generated method stub
    try {

        if (preTax !=null){ 

            Double incomeAmount = Double.parseDouble(preTax.getText().toString());
            incomeAmount = incomeAmount - (0.2 *incomeAmount);      
            Double incomeRounded = Round(incomeAmount);
            Toast.makeText(v.getContext(), "Your income minus tax = "+incomeRounded, Toast.LENGTH_LONG).show();
            String storeIncome = Double.toString(incomeRounded);

            try{
                FileOutputStream fos = openFileOutput("income", Context.MODE_PRIVATE);
                OutputStreamWriter osw = new OutputStreamWriter(fos);
                osw.write(storeIncome);

                osw.flush();
                osw.close();

            } catch(Exception e){
                Toast.makeText(this, "Error writing to file", Toast.LENGTH_LONG).show();
            }
        }

        else if (postTax!=null){

            Doubl开发者_如何学Ce incomeAmount = Double.parseDouble(postTax.getText().toString());
            Double incomeRounded = Round(incomeAmount);
            Toast.makeText(v.getContext(), "Your income is: "+ incomeRounded, Toast.LENGTH_LONG).show();
            String storeIncome = Double.toString(incomeRounded);


            try{
                FileOutputStream fos = openFileOutput("income", Context.MODE_PRIVATE);
                OutputStreamWriter osw = new OutputStreamWriter(fos);

                osw.write(storeIncome);
                osw.flush();
                osw.close();

            } catch(Exception e){
                Toast.makeText(this, "Error writing to file", Toast.LENGTH_LONG).show();
            }
        }

    } catch (Exception e){
        Toast.makeText(v.getContext(), "Please fill in the relevant catagories", Toast.LENGTH_LONG).show();
    }


It's totally expected. The line:

 Double incomeAmount = Double.parseDouble(postTax.getText().toString());

can throw NumberFormatException if number entered in postTax edit doesn't parse to double. The bottom catch is the closest one to capture this exception.

Put this line (along with few subsequent ones) inside the try-catch block a little below to have the exception caught there. (You will likely want to change the toast message though, into something like "Failed to process post tax value").

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号