S_pot
C#_try-catch-finally문 본문
try-catch문: try가 감싸고 있던 명령문에서 예외가 발생하면 catch문에 저장된 명령을 실행하도록 함.
예외처리
private void BM_WokerMaster_Load(object sender, EventArgs e)
{
try
{
#region < 그리드 셋팅>
// 그리드 셋팅을 위한
_GridUtil.InitializeGrid(this.grid1, false, true, false, "", false);
_GridUtil.InitColumnUltraGrid(grid1, "PLANTCODE", "공장", true, GridColDataType_emu.VarChar, 130, 200, Infragistics.Win.HAlign.Left, true, true);
_GridUtil.InitColumnUltraGrid(grid1, "WORKERID", "작업자ID", true, GridColDataType_emu.VarChar, 130, 200, Infragistics.Win.HAlign.Left, true, true);
_GridUtil.InitColumnUltraGrid(grid1, "WORKERNAME", "작업자명", true, GridColDataType_emu.VarChar, 130, 200, Infragistics.Win.HAlign.Left, true, true);
_GridUtil.InitColumnUltraGrid(grid1, "BANCODE", "작업반", true, GridColDataType_emu.VarChar, 130, 200, Infragistics.Win.HAlign.Left, true, true);
_GridUtil.InitColumnUltraGrid(grid1, "GRPID", "그룹", true, GridColDataType_emu.VarChar, 130, 200, Infragistics.Win.HAlign.Left, true, true);
_GridUtil.InitColumnUltraGrid(grid1, "DEPTCODE", "부서", true, GridColDataType_emu.VarChar, 130, 200, Infragistics.Win.HAlign.Left, true, true);
_GridUtil.InitColumnUltraGrid(grid1, "PHONENO", "전화번호", true, GridColDataType_emu.VarChar, 130, 200, Infragistics.Win.HAlign.Left, true, true);
_GridUtil.InitColumnUltraGrid(grid1, "INDATE", "입사일자", true, GridColDataType_emu.VarChar, 130, 200, Infragistics.Win.HAlign.Left, true, true);
_GridUtil.InitColumnUltraGrid(grid1, "OUTDATE", "퇴사일자", true, GridColDataType_emu.VarChar, 130, 200, Infragistics.Win.HAlign.Left, true, true);
_GridUtil.InitColumnUltraGrid(grid1, "USEFLAG", "사용여부", true, GridColDataType_emu.VarChar, 130, 200, Infragistics.Win.HAlign.Left, true, true); // 마지막부분 true/false는 수정가능 여부를 말한다.
_GridUtil.InitColumnUltraGrid(grid1, "MAKEDATE", "등록일시", true, GridColDataType_emu.DateTime24, 130, 200, Infragistics.Win.HAlign.Left, true, false);
_GridUtil.InitColumnUltraGrid(grid1, "MAKER", "등록자", true, GridColDataType_emu.VarChar, 130, 200, Infragistics.Win.HAlign.Left, true, false);
_GridUtil.InitColumnUltraGrid(grid1, "EDITDATE", "수정일시", true, GridColDataType_emu.DateTime24, 130, 200, Infragistics.Win.HAlign.Left, true, false);
_GridUtil.InitColumnUltraGrid(grid1, "EDITOR", "수정자", true, GridColDataType_emu.VarChar, 130, 200, Infragistics.Win.HAlign.Left, true, false);
_GridUtil.SetInitUltraGridBind(grid1);
#endregion
Common _Common = new Common();
DataTable dtTemp = new DataTable(); // DataTable = 데이터를 담는 그릇
// 공장 콤보박스 설정
// 공장 그리드에 표현
dtTemp = _Common.Standard_CODE("PLANTCODE");
Common.FillComboboxMaster(this.cboPlantCode, dtTemp, dtTemp.Columns["CODE_ID"].ColumnName, dtTemp.Columns["CODE_NAME"].ColumnName, "ALL", "");
UltraGridUtil.SetComboUltraGrid(this.grid1, "PLANTCODE", dtTemp, "CODE_ID", "CODE_NAME");
// 사용여부 콤보박스 설정
// 사용여부 그리드에 표현
dtTemp = _Common.Standard_CODE("USEFLAG");
Common.FillComboboxMaster(this.cboUseFlag, dtTemp, dtTemp.Columns["CODE_ID"].ColumnName, dtTemp.Columns["CODE_NAME"].ColumnName, "ALL", "");
UltraGridUtil.SetComboUltraGrid(this.grid1, "USEFLAG", dtTemp, "CODE_ID", "CODE_NAME");
// 그룹코드 그리드에 표현
dtTemp = _Common.Standard_CODE("GRPID");
UltraGridUtil.SetComboUltraGrid(this.grid1, "GRPID", dtTemp, "CODE_ID", "CODE_NAME");
// 반 코드 그리드에 표현
dtTemp = _Common.Standard_CODE("BANCODE");
UltraGridUtil.SetComboUltraGrid(this.grid1, "BANCODE", dtTemp, "CODE_ID", "CODE_NAME");
// 부서 코드 그리드에 표현
dtTemp = _Common.Standard_CODE("DEPTCODE");
UltraGridUtil.SetComboUltraGrid(this.grid1, "DEPTCODE", dtTemp, "CODE_ID", "CODE_NAME");
// 공장 코드 고정
cboPlantCode.Value = LoginInfo.PlantCode;
}
catch (Exception ex)
{
// 예외상황 발생 시 실행
Console.WritLine("에러발생")
}
}
try-catch-finally: 예외가 발생하지 않아도 finally는 무조건 실행됨
public override void DoSave()
{
// 저장버튼 클릭
DataTable dt = grid1.chkChange(); //chkChange(): 바뀐 구문만 받아옴
if (dt == null) return; // dt에 대한 내용이 바뀐게 없다면 리턴
DBHelper helper = new DBHelper("", true);
try
{
if (ShowDialog("등록 내역을 저장하시겠습니까?") == System.Windows.Forms.DialogResult.Cancel)
{
return;
}
foreach (DataRow drrow in dt.Rows) // dt에 있는 것을 한줄 씩 출력
{
switch (drrow.RowState)
{
case DataRowState.Deleted: // 행의 상태가 삭제된 상태
drrow.RejectChanges();
helper.ExecuteNoneQuery("14BM_WokerMaster_D1", CommandType.StoredProcedure
, helper.CreateParameter("PLANTCODE", Convert.ToString(drrow["PLANTCODE"]), DbType.String, ParameterDirection.Input)
, helper.CreateParameter("WORKERID" , Convert.ToString(drrow["WORKERID"]) , DbType.String, ParameterDirection.Input)
);
break;
case DataRowState.Modified: // 행의 상태가 수정된 상태
helper.ExecuteNoneQuery("14BM_WokerMaster_U1", CommandType.StoredProcedure
, helper.CreateParameter("PLANTCODE", Convert.ToString(drrow["PLANTCODE"]), DbType.String, ParameterDirection.Input)
, helper.CreateParameter("WORKERID", Convert.ToString(drrow["WORKERID"]), DbType.String, ParameterDirection.Input)
, helper.CreateParameter("WORKERNAME", Convert.ToString(drrow["WORKERNAME"]), DbType.String, ParameterDirection.Input)
, helper.CreateParameter("BANCODE", Convert.ToString(drrow["BANCODE"]), DbType.String, ParameterDirection.Input)
, helper.CreateParameter("GRPID", Convert.ToString(drrow["GRPID"]), DbType.String, ParameterDirection.Input)
, helper.CreateParameter("DEPTCODE", Convert.ToString(drrow["DEPTCODE"]), DbType.String, ParameterDirection.Input)
, helper.CreateParameter("PHONENO", Convert.ToString(drrow["PHONENO"]), DbType.String, ParameterDirection.Input)
, helper.CreateParameter("INDATE", Convert.ToString(drrow["INDATE"]), DbType.String, ParameterDirection.Input)
, helper.CreateParameter("OUTDATE", Convert.ToString(drrow["OUTDATE"]), DbType.String, ParameterDirection.Input)
, helper.CreateParameter("USEFLAG", Convert.ToString(drrow["USEFLAG"]), DbType.String, ParameterDirection.Input)
, helper.CreateParameter("EDITOR", LoginInfo.UserID, DbType.String, ParameterDirection.Input)
);
break;
case DataRowState.Added: // 행의 상태가 추가된 상태
helper.ExecuteNoneQuery("14BM_WokerMaster_I1", CommandType.StoredProcedure
, helper.CreateParameter("PLANTCODE", Convert.ToString(drrow["PLANTCODE"]), DbType.String, ParameterDirection.Input)
, helper.CreateParameter("WORKERID", Convert.ToString(drrow["WORKERID"]), DbType.String, ParameterDirection.Input)
, helper.CreateParameter("WORKERNAME", Convert.ToString(drrow["WORKERNAME"]), DbType.String, ParameterDirection.Input)
, helper.CreateParameter("BANCODE", Convert.ToString(drrow["BANCODE"]), DbType.String, ParameterDirection.Input)
, helper.CreateParameter("GRPID", Convert.ToString(drrow["GRPID"]), DbType.String, ParameterDirection.Input)
, helper.CreateParameter("DEPTCODE", Convert.ToString(drrow["DEPTCODE"]), DbType.String, ParameterDirection.Input)
, helper.CreateParameter("PHONENO", Convert.ToString(drrow["PHONENO"]), DbType.String, ParameterDirection.Input)
, helper.CreateParameter("INDATE", Convert.ToString(drrow["INDATE"]), DbType.String, ParameterDirection.Input)
, helper.CreateParameter("OUTDATE", Convert.ToString(drrow["OUTDATE"]), DbType.String, ParameterDirection.Input)
, helper.CreateParameter("USEFLAG", Convert.ToString(drrow["USEFLAG"]), DbType.String, ParameterDirection.Input)
, helper.CreateParameter("MAKER", LoginInfo.UserID, DbType.String, ParameterDirection.Input)
);
break;
}
if (helper.RSCODE != "S") break;
}
if (helper.RSCODE != "S")
{
helper.Rollback();
// ShowDialog는 다른작업을 못한다.
ShowDialog("데이터 등록에 실패 하였습니다", DC00_WinForm.DialogForm.DialogType.OK);
return;
}
helper.Commit();
ShowDialog("데이터 등록에 성공 하였습니다", DC00_WinForm.DialogForm.DialogType.OK);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
helper.Rollback(); // 원상복구 시켜라
}
finally
{
helper.Close();
}
}
'C#' 카테고리의 다른 글
C#_MSSQL 서버와 연결하기 (0) | 2021.07.15 |
---|---|
C#_Split: 입력값 띄어쓰기 (0) | 2021.06.27 |
C#_this키워드를 사용하는이유 (0) | 2021.06.27 |
C#_delegate2:익명메서드, 람다식 (0) | 2021.06.14 |
C#_delegate2:익명메서드, 람다식 (0) | 2021.06.14 |