Skip to content

Commit 024ad34

Browse files
committed
Add: error handling for file operations and ensure file creation if missing
1 parent f5d1da9 commit 024ad34

File tree

1 file changed

+53
-19
lines changed

1 file changed

+53
-19
lines changed

main.js

Lines changed: 53 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,36 @@ const inquirer = require("inquirer");
33
const fs = require("fs");
44
const { type } = require("os");
55

6-
const isi_file = fs.readFileSync("data-karyawan.txt", "utf-8");
7-
const baris = isi_file.trim().split("\n");
6+
const file_path = "data-karyawan.txt";
7+
8+
if (!fs.existsSync(file_path)) {
9+
console.warn(`File "${file_path}" tidak ditemukan. Membuat file baru...`);
10+
fs.writeFileSync(file_path, "");
11+
}
12+
13+
let = isi_file = "";
14+
15+
try {
16+
isi_file = fs.readFileSync(file_path, "utf-8").trim();
17+
} catch (err) {
18+
console.error(`Gagal membaca file "${file_path}": ${err.message}`);
19+
process.exit(1);
20+
}
21+
22+
const baris = isi_file ? isi_file.split("\n") : [];
823

924
let data = [];
1025

1126
for (let i = 0; i < baris.length; i++) {
12-
let kolom = baris[i].split("|");
13-
14-
data.push({
15-
ID: kolom[0],
16-
NAMA: kolom[1],
17-
JABATAN: kolom[2],
18-
TELP: kolom[3],
19-
});
27+
const kolom = baris[i].split("|");
28+
if (kolom.length >= 4) {
29+
data.push({
30+
ID: kolom[0],
31+
NAMA: kolom[1],
32+
JABATAN: kolom[2],
33+
TELP: kolom[3],
34+
});
35+
}
2036
}
2137

2238
// TAMPILKAN DATA =================================================================================
@@ -120,8 +136,14 @@ async function tambah_data() {
120136
.map((item) => `${item.ID}|${item.NAMA}|${item.JABATAN}|${item.TELP}`)
121137
.join("\n") + "\n";
122138

123-
fs.writeFileSync("data-karyawan.txt", write_data);
124-
console.log("========== DATA BERHASIL DITAMBAHKAN DAN DISIMPAN ==========");
139+
try {
140+
fs.writeFileSync(file_path, write_data);
141+
console.log(
142+
"========== DATA BERHASIL DITAMBAHKAN DAN DISIMPAN =========="
143+
);
144+
} catch (err) {
145+
console.error("Gagal menyimpan file.", err.message);
146+
}
125147
} else {
126148
console.log("Penyimpanan dibatalkan. Data tidak disimpan.");
127149
}
@@ -252,9 +274,13 @@ async function sort_by_id() {
252274
)
253275
.join("\n") + "\n";
254276

255-
fs.writeFileSync("data-karyawan.txt", new_data);
256-
data = data_sort;
257-
console.log("Data telah disimpan ke file.");
277+
try {
278+
fs.writeFileSync(file_path, new_data);
279+
data = data_sort;
280+
console.log("Data telah disimpan ke file.");
281+
} catch (err) {
282+
console.error("Gagal menyimpan file.", err.message);
283+
}
258284
} else {
259285
console.log("Aksi dibatalkan. Data tidak disimpan.");
260286
}
@@ -435,8 +461,12 @@ async function edit_data() {
435461
.map((item) => `${item.ID}|${item.NAMA}|${item.JABATAN}|${item.TELP}`)
436462
.join("\n") + "\n";
437463

438-
fs.writeFileSync("data-karyawan.txt", new_file_data);
439-
console.log("Data berhasil diperbarui dan disimpan ke file.");
464+
try {
465+
fs.writeFileSync(file_path, new_file_data);
466+
console.log("Data berhasil diperbarui dan disimpan ke file.");
467+
} catch (err) {
468+
console.error("Gagal menyimpan file.", err.message);
469+
}
440470
}
441471
// ================================================================================================
442472

@@ -540,8 +570,12 @@ async function delete_data() {
540570
.map((item) => `${item.ID}|${item.NAMA}|${item.JABATAN}|${item.TELP}`)
541571
.join("\n") + "\n";
542572

543-
fs.writeFileSync("data-karyawan.txt", new_file_data);
544-
console.log("File berhasil diperbarui setelah penghapusan.");
573+
try {
574+
fs.writeFileSync("data-karyawan.txt", new_file_data);
575+
console.log("File berhasil diperbarui setelah penghapusan.");
576+
} catch (err) {
577+
console.error("Gagal menyimpan file.", err.message);
578+
}
545579
} else {
546580
console.log("Data di file tidak diubah.");
547581
}

0 commit comments

Comments
 (0)