CodeNewbie
  • 안드로이드 개발공부 8일차 TIL - 예외처리, 널안정성
    2023년 11월 29일 20시 56분 41초에 업로드 된 글입니다.
    작성자: 짧은 코딩끈

    일자 : 2023.11.29


    금일 공부 목록

    • 알고리즘 1문제 풀기
    • 코틀린 문법강의 4주차
    • 알고리즘 세션 강의 수강(이종범 튜터님)
    • 개인과제 (Lv1~2)

     

    다음 공부 목록

    • 알고리즘 1문제 풀기
    • 코틀린 문법강의 4주차
    • 개인과제 (Lv2~3)

    TIL 정리

    ▶예외처리


    실행하기전 프로그래밍 언어를 번역하는 과정에서 발견되는 에러를 컴파일에러  
    실시간으로 프로그래밍 언어를 통역하는 과정에서 발견되는 에러를 런타임 에러
    오류가 발생할 경우 프로그램이 비정상적으로 작동중지 할 수 있다.


    작동중지는 심각한 문제이므로

    사용성을 해치지않고, 안정적으로 실행할 수 있도록 예상되는 오류를 예외처리하는 것이 좋다

     

    try catch

    더보기

    try 구문에서 해당 코드를 실행
    정상 실행 후 break문에서 탈출

    아니라면, catch문에서 코드 실행

    while(true) {
    try {
        var num1 = readLine()!!.toInt()
        println("내가 입력한 숫자는 ${num1}입니다")
        break
    } catch(e:java.lang.NumberFormatException) {
        println("숫자를 입력하세요")
    	}
    }

     

    try catch finally

    더보기

    finally는 실행오류와 상관없이 무조건 실행하는 구문 

    while(true) {
      try {
         var num1 = readLine()!!.toInt()
         println("내가 입력한 숫자는 ${num1}입니다")
         break
       } catch(e:java.lang.NumberFormatException) {
           println("숫자를 입력하세요")
       } finally {
          println("키보드와의 연결은 정상적입니다")
        }
    }

    ▶알고리즘 세션


    프로그래머스 2~3단계 문제를 스스로 풀 수 있는 수준이 되어야 한다.. ( °̥̥̥̥̥̥̥̥◡͐°̥̥̥̥̥̥̥̥)

     

    널 안정성 (Null-Safety)


    코틀린에서는 기본적으로 Null 값을 할당할 수 없다.
    그렇기에 Null 값을 허용하도록 하는 것이 Null-Safety

     

    ? !! ?. ?:
    null 값 허용 컴파일러에게 null 값 아님을 강제 보증하는것
    null 값이면 실행 멈춤
    ( null 값 여부를 모를때
    웬만하면 쓰지말것)
    null 값이면 null 값도출
    아니라면 (.)참조연산자 진행
    null이 아니라면 그대로 값 도출
    null이라면 (: 디폴트)값 도출

     

    ?

    var c: String? = "안녕하세요"
    println(c)
    c = null
    println(c)

     

    !!

    var c : String? = "안녕하세요"
    c = null
    println(c!!.length) // 실행멈춤 ,에러발생

     

    ?. ?:

    var c: String? = "안녕하세요"
    println(c.length)  // c변수에 null 값이 있을수도 없을수도 있는 상황으로 오류 발생 
    
    var c: String? = "안녕하세요"
    println(c?.length) // null 값이면 null 값 그대로 도출 아니라면 변수 c의 길이값 
    
    c = null
    println(c?.length?: "null 값입니다.")  // null 값이므로 "null 값입니다." 도출

     

    금일 회고

    상태:😫

    회고: 문법 강의 후에 과제를 시작했다. lv1~2를 했는데, 간단하게 보였지만 신경쓸게 많았다.

    아직 미숙하여, 바로바로 머리에 떠오르지 않아서 시간도 걸리고 시행착오도 겪고 있다.

    다른 분들은 이미 lv3까지 다하셔서 호텔 예약 과제 한다고 하시는데 부럽기도 하고 여러모로 더 열심히 달려야겠다.

     

     

    댓글