예외 처리
감상 예외는 C#7에서 switch로 사용하는 방법도 있는 것 같고 프로퍼티나 enum으로 복수 처리할 필요가 있는 경우에 사용할 수 있다고 생각하지만,
그만큼의 에러수마다의 작성은 뼈가 부러진다고 생각했습니다.
꺾어 접어 뿐입니다만…DB 취급할 때 실천적으로 해 나가려고 생각합니다. 이상은 사쿠토 사양만 메모는 자작 할 수 있으면 좋지만, 좀처럼 잘 가지 않는다 ☂
모치베도 떨어졌기 때문에 일단 전환해 연내는 통역 관계의 사업 계획서 제작에 전념하고 싶습니다.
예외 처리
예외가 던졌을 때 발생하는 처리입니다.
분기로도 사용할 수 있지만 무겁기 때문에 보통은 사용하지 않습니다.
초기 프로그래밍계에서는 대부분이 이 예외 처리였다고 합니다.
(그 시대가 아니어서 좋았다…)
이전에 갔다 기본값 외 예외 처리 코드
// 既定値外
int numOfTesters = exNo;
// 文字は代入されずwhileへ、既定値外は代入されwhileへ、既定値は代入されwhileパス
if (int.TryParse(Console.ReadLine(), out var nType))
{ numOfTesters = nType; }
while (numOfTesters < 0)
{
Console.Write("retype. ");
if (int.TryParse(Console.ReadLine(), out nType))
numOfTesters = nType;
}
이 방법으로 예외를 처리할 수 있습니다. if while
에서 기본값 이외의 기본값을 벗어나 문자를 처리하여 루프로 만들었습니다.
예외 처리를 위한 구문
1.try catch
예외 처리의 정평, try{例外123...} catch{処理}
또 catch
에 when
붙일 수 있게 되었다(예외 처리 같으면 정리해 catch)catch (Exception e) when (e is ArgumentNullException || e is ArgumentOutOfRangeException)
사전 지식:
세트using System.IO; //読み書き
Console.WriteLine(strmRdr.ReadToEnd()); //内容をすべて読み込む
strmRdr.Close(); ////.ReadToEnd後関連付けられたすべてのシステムリソースを解放
예외 오류 메시지 그대로 표시 catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
기본 코드 예제는 여기에 나와 있습니다.
using System;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
try
{
Console.Write ("fileパス指定 ");
StreamReader strmRdr = new StreamReader(Console.ReadLine());
Console.WriteLine(strmRdr.ReadToEnd()); //内容をすべて読み込む
strmRdr.Close(); ////.ReadToEnd後関連付けられたすべてのシステムリソースを解放
Console.ReadLine();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
try catch하지 않고 경로가 틀린 경우 오류
using System;
using System.IO;
namespace ConsoleApplication1 {
class Program {
static void Main(string[] args) {
Console.Write ("fileパス指定 ");
StreamReader strmRdr = new StreamReader(Console.ReadLine());
Console.WriteLine(strmRdr.ReadToEnd()); //内容をすべて読み込む
strmRdr.Close(); ////.ReadToEnd後関連付けられたすべてのシステムリソースを解放
}
}
}
따라서 try
catch
에서 파일이 없을 때 오류를 처리할 수
2.Exception class/member
Exception class는 예외 메시지를 검색하는 라이브러리입니다.
사용할 때는 직렬화(에러 메세지나 설정 파일의 전송이나 보존)라고 한다.
주요 Exception 클래스 및 멤버 Best 5
catch(FileNotFoundException ex){//存在しないファイル}
catch(NullReferenceException ex){//nullのオブジェクトを操作した}
catch(DivideByZeroException ex){//0による除算}
catch(IndexOutOfRangeException ex){//配列境界こえた}
catch(Exception ex){//その他の例外}
{Console.WriteLine(ex.Message);}//例外に関するメッセージ
{Console.WriteLine(ex.Source);}//発生源のアプリやファイル名
{Console.WriteLine(ex.HelpLink);}//その例外に関するヘルプリンク
{Console.WriteLine(ex.StackTrace);}//処理メソッド説明(デバッグ情報でスタックトレース(スタックの追跡))
{Console.WriteLine(ex.TargetSite);}//例外発生した部分表示
//1つの処理で複数例外でる場合、throwで別のメソッドに再スローすればいい
//逆に複数処理で1つの例外でる場合、whenでまとめればいい
memo : 학습하는 다른 예외 처리
async, await, Await in catch and finally blocks
Reference
이 문제에 관하여(예외 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/h_okabe/items/dabfa30711069661ddb4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
// 既定値外
int numOfTesters = exNo;
// 文字は代入されずwhileへ、既定値外は代入されwhileへ、既定値は代入されwhileパス
if (int.TryParse(Console.ReadLine(), out var nType))
{ numOfTesters = nType; }
while (numOfTesters < 0)
{
Console.Write("retype. ");
if (int.TryParse(Console.ReadLine(), out nType))
numOfTesters = nType;
}
using System.IO; //読み書き
Console.WriteLine(strmRdr.ReadToEnd()); //内容をすべて読み込む
strmRdr.Close(); ////.ReadToEnd後関連付けられたすべてのシステムリソースを解放
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
using System;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
try
{
Console.Write ("fileパス指定 ");
StreamReader strmRdr = new StreamReader(Console.ReadLine());
Console.WriteLine(strmRdr.ReadToEnd()); //内容をすべて読み込む
strmRdr.Close(); ////.ReadToEnd後関連付けられたすべてのシステムリソースを解放
Console.ReadLine();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
using System;
using System.IO;
namespace ConsoleApplication1 {
class Program {
static void Main(string[] args) {
Console.Write ("fileパス指定 ");
StreamReader strmRdr = new StreamReader(Console.ReadLine());
Console.WriteLine(strmRdr.ReadToEnd()); //内容をすべて読み込む
strmRdr.Close(); ////.ReadToEnd後関連付けられたすべてのシステムリソースを解放
}
}
}
catch(FileNotFoundException ex){//存在しないファイル}
catch(NullReferenceException ex){//nullのオブジェクトを操作した}
catch(DivideByZeroException ex){//0による除算}
catch(IndexOutOfRangeException ex){//配列境界こえた}
catch(Exception ex){//その他の例外}
{Console.WriteLine(ex.Message);}//例外に関するメッセージ
{Console.WriteLine(ex.Source);}//発生源のアプリやファイル名
{Console.WriteLine(ex.HelpLink);}//その例外に関するヘルプリンク
{Console.WriteLine(ex.StackTrace);}//処理メソッド説明(デバッグ情報でスタックトレース(スタックの追跡))
{Console.WriteLine(ex.TargetSite);}//例外発生した部分表示
//1つの処理で複数例外でる場合、throwで別のメソッドに再スローすればいい
//逆に複数処理で1つの例外でる場合、whenでまとめればいい
Reference
이 문제에 관하여(예외 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/h_okabe/items/dabfa30711069661ddb4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)