Android에서 예외 메시지 출력하기
이 튜토리얼에서는 Android 앱에서 발생한 예외(Exception) 메시지를 화면에 출력하는 방법을 단계별로 알아봅니다. 실제 코드 예제를 통해 try-catch 블록에서 잡은 예외를 TextView로 보여주는 과정을 다룹니다.
1단계: 새 프로젝트 생성
Android Studio를 실행하고 File → New Project 메뉴로 이동한 후, 새 프로젝트 생성에 필요한 모든 세부 정보를 입력하여 프로젝트를 만듭니다.
2단계: 레이아웃 파일 작성
다음 코드를 res/layout/activity_main.xml 파일에 추가합니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center_horizontal"
android:layout_marginTop="100dp"
tools:context=".MainActivity">
<TextView
android:id="@+id/text"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
</LinearLayout>위 코드에서는 예외 메시지를 화면에 표시하기 위한 TextView 하나를 배치했습니다.
3단계: MainActivity 작성
다음 코드를 src/MainActivity.java 파일에 추가합니다.
package com.example.myapplication;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text = findViewById(R.id.text);
try {
int a = 0;
int b = 10;
int result = b/a;
System.out.println(result);
} catch(Exception e) {
text.setText(e.toString());
e.printStackTrace();
}
}
}코드 설명
이 예제의 핵심은 try-catch 블록입니다. 변수 a가 0으로 초기화되어 있기 때문에 b/a 연산을 수행하는 순간 ArithmeticException(0으로 나누기 오류)이 발생합니다.
catch 블록에서는 두 가지 방식으로 예외를 처리합니다.
첫째, e.toString()을 호출하여 예외 정보를 문자열로 변환한 뒤 TextView에 설정해 사용자에게 화면으로 보여줍니다.
둘째, e.printStackTrace()를 호출하여 예외의 상세 스택 추적(stack trace) 정보를 Logcat 콘솔에 출력합니다. 이는 개발 중 디버깅에 매우 유용합니다.
앱 실행 및 결과 확인
이제 애플리케이션을 실행해 보겠습니다. 실제 Android 기기를 컴퓨터에 연결했다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 열고 툴바의 Run(실행) 아이콘을 클릭하세요. 옵션 목록에서 자신의 모바일 기기를 선택하면, 기본 화면과 함께 앱이 실행됩니다.
앱이 실행되면 0으로 나누기 시도로 인해 예외가 발생하고, catch 블록이 이를 잡아 다음과 같이 화면에 예외 메시지가 표시됩니다.
