안드로이드 개발

ArithmeticException 해결 방법

피커 2023. 5. 4. 15:15
728x90
반응형

안드로이드 코딩을 하다보면 ArithmeticException이라는 에러를 마주치게 됩니다.

아주 간단히 수정이 가능한 에러이며, 아래 수정 코드를 참고하시기 바랍니다.

 

1. 에러 코드 (오류)

 - . 아래 코드에서 10 / 0을 하는 부분이 있는데, 실제 수학에서 0으로 나누는 경우는 없습니다.

     이렇게 수학적으로 에러가 발생하는 경우가 문제가 됩니다.

 

2. 오류 코드

  -. 오류 발생시 아래처럼 오류를 출력하게 됩니다.

 

3. 수정 코드

 -. 아래 파란색으로 마킹한 부분처럼 수학적인 부분을 수정하게 되면 문제는 깔끔하게 해결됩니다.

    아주 간단하지만, 실제 복잡한 코드를 구현할때는 놓치는 경우가 많은 에러입니다.

 

*. 에러 로그 원문

FATAL EXCEPTION: main
Process: com.picker.javaexception, PID: 27523
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.picker.javaexception/com.picker.javaexception.MainActivity}: java.lang.ArithmeticException: divide by zero
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3635)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3792)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2210)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7839)
at java.lang.reflect.Method.invoke(Native Method)
at co m.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) 
at co m.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) 
Caused by: java.lang.ArithmeticException: divide by zero
at com.picker.javaexception.MainActivity.plusNumber(MainActivity.java:21)
at com.picker.javaexception.MainActivity.onCreate(MainActivity.java:17)
at android.app.Activity.performCreate(Activity.java:8051)
at android.app.Activity.performCreate(Activity.java:8031)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3608)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3792) 
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103) 
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2210) 
at android.os.Handler.dispatchMessage(Handler.java:106) 
at android.os.Looper.loopOnce(Looper.java:201) 
at android.os.Looper.loop(Looper.java:288) 
at android.app.ActivityThread.main(ActivityThread.java:7839) 
at java.lang.reflect.Method.invoke(Native Method) 
at co m.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)  
at co m.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)   

 

*. 익셉션 백서 원문

Thrown when an exceptional arithmetic condition has occurred. For example, an integer "divide by zero" throws an instance of this class. ArithmeticException objects may be constructed by the virtual machine as if stack trace was not writable.

Summary

Public constructors
ArithmeticException()Constructs an ArithmeticException with no detail message.
ArithmeticException(String s)Constructs an ArithmeticException with the specified detail message.
Inherited methods
From class java.lang.Throwable
From class java.lang.Object

Public constructors

ArithmeticException

Added in API level 1
 
public ArithmeticException ()

Constructs an ArithmeticException with no detail message.

ArithmeticException

Added in API level 1
 
public ArithmeticException (String s)

Constructs an ArithmeticException with the specified detail message.

Parameters
s String: the detail message.

 

 

*. 수정 코드 원문

package com.picker.javaexception;

import android.os.Bundle;
import android.util.Log;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "javaexception";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        plusNumber();
    }

    private void plusNumber() {
        int a = 10 / 0;
        Log.d(TAG, "plusNumber: " + a);
    }
}
반응형