Try/catch ArithmeticException

package br.com.senacrs.xiremersoncalcsplus;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.io.IOException;

public class MainActivity extends AppCompatActivity {
EditText edV1, edV2;
Button btSomar, btSubtraction, btMultiplication, btDivision;

public double exempla1(double a, double b) {
    try {
        return a / b;
    } catch (Divi e) {
        throw new ArithmeticException("Error: the divisor cannot be 0");
    }
}

@Override


protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    edV1 = (EditText) findViewById(R.id.edV1);
    edV2 = (EditText) findViewById(R.id.edV2);
    btSomar = (Button) findViewById(R.id.btSomar);
    btSubtraction = (Button) findViewById(R.id.btSubtraction);
    btMultiplication = (Button) findViewById(R.id.btMultiplication);
    btDivision = (Button) findViewById(R.id.btDivision);


    btSomar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            double v1, v2, soma = 0;
            v1 = Double.parseDouble(edV1.getText().toString());
            v2 = Double.parseDouble(edV2.getText().toString());
            soma = v1 + v2;
            AlertDialog.Builder dialogo =
                    new AlertDialog.Builder(MainActivity.this);
            dialogo.setTitle("Resultado soma");
            dialogo.setMessage("O resultado é " + soma);
            dialogo.setNeutralButton("OK", null);
            dialogo.show();

        }
    });

    btSubtraction.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            double v1, v2, subtraction = 0;
            v1 = Double.parseDouble(edV1.getText().toString());
            v2 = Double.parseDouble(edV2.getText().toString());
            subtraction = v1 - v2;
            AlertDialog.Builder dialogo =
                    new AlertDialog.Builder(MainActivity.this);
            dialogo.setTitle("Resultado subtração");
            dialogo.setMessage("O resultado é " + subtraction);
            dialogo.setNeutralButton("OK", null);
            dialogo.show();

        }
    });

    btMultiplication.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            double v1, v2, multiplication = 0;
            v1 = Double.parseDouble(edV1.getText().toString());
            v2 = Double.parseDouble(edV2.getText().toString());
            multiplication = v1 * v2;
            AlertDialog.Builder dialogo =
                    new AlertDialog.Builder(MainActivity.this);
            dialogo.setTitle("Resultado multiplicação");
            dialogo.setMessage("O resultado é " + multiplication);
            dialogo.setNeutralButton("OK", null);
            dialogo.show();

        }
    });


    btDivision.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {
            double v1, v2;
            v1 = Double.parseDouble(edV1.getText().toString());
            v2 = Double.parseDouble(edV2.getText().toString());


            AlertDialog.Builder dialogo =
                    new AlertDialog.Builder(MainActivity.this);
            dialogo.setTitle("Resultado divisão");
            dialogo.setMessage("O resultado é " + exempla1(v1, v2));
            dialogo.setNeutralButton("OK", null);
            dialogo.show();
        }

    });
}
}

Bom dia!
Então, não estou conseguindo exibir a mensagem do catch quando utilizo um divisor = 0. Alguém pode me ajudar? À princípio o método está funcional, porém retorna o texto "Infinity.

Divisão por zero só lança ArithmeticException quando realizada com números inteiros mas você está usando double.

Ótimo! Uma luz! Muito obrigado pela tua resposta. Existe algum tratamento de erro para double?

if(b == 0)
throw new ArithmeticException(“Nã pode ser zero”);

É que, matematicamente falando, no conjunto dos números reais, se dividir um valor positivo por zero, o resultado será positivo infinito.

Exato. Reproduzir esse valor não crasha a memória, dando pau no sistema? No caso, tive a ideia de usar o ArithmeticException por isso, mas posso estar errado.

Isso está respondido na última frase do primeiro post: o método está funcional, porém retorna o texto “Infinity”

Dê uma lida na IEEE 754.

Se você não quiser permitir a divisão por zero utilizando double, vai ter de tratar isso manualmente.

Exemplo:

public double dividir(double dividendo, double divisor) {
    if (divisor == 0) {
        throw new ArithmeticException("Divisão por zero");
    }
    return dividendo / divisor;
}