Saya punya aplikasi konsol sepele di .NET. Itu hanya bagian uji aplikasi yang lebih besar. Saya ingin menentukan "kode keluar" dari aplikasi konsol saya. Bagaimana saya melakukan ini?
471
3 pilihan:
Main
jika Anda menyatakan Main
metode Anda untuk kembali int
.Environment.Exit(code)
.Environment.ExitCode = -1;
. Ini akan digunakan jika tidak ada lagi yang mengatur kode pengembalian atau menggunakan salah satu opsi lain di atas).Bergantung pada aplikasi Anda (konsol, layanan, aplikasi web, dll) metode yang berbeda dapat digunakan.
0
berarti sukses, dan bukan nol berarti kegagalan.return;
menunjukkan keberhasilan melalui kode keluar0
, danreturn -1;
menunjukkan kegagalan.Selain jawaban yang mencakup int kembali ... permohonan untuk kewarasan. Tolong, tolong tentukan kode keluar Anda dalam enum, dengan Bendera jika perlu. Itu membuat debugging dan pemeliharaan jauh lebih mudah (dan, sebagai bonus, Anda dapat dengan mudah mencetak kode keluar di layar bantuan Anda - Anda memiliki salah satunya, kan?).
sumber
0 = Success
berasal dari kenyataan bahwa hanya ada satu kode keberhasilan yang diperlukan, tetapi banyak kode kesalahan, sehingga 0, karena tidak memiliki + atau - dalam bilangan bulat Komputer, dapat digunakan untuk secara unik mengidentifikasi keberhasilanAda tiga metode yang dapat Anda gunakan untuk mengembalikan kode keluar dari aplikasi konsol.
Main
metode dalam aplikasi Anda sehingga mengembalikanint
bukanvoid
(fungsi yang mengembalikanInteger
bukanSub
di VB.Net) dan kemudian mengembalikan kode keluar dari metode itu.Main
metode mengembalikan apa pun selainvoid
(adalahSub
dalam VB.Net) maka nilai properti ini akan diabaikan.Standar penting yang harus diperhatikan adalah yang
0
mewakili 'Sukses'.Pada topik terkait, pertimbangkan untuk menggunakan enumerasi untuk menentukan kode keluar yang akan dikembalikan oleh aplikasi Anda. The FlagsAttribute akan memungkinkan Anda untuk kembali kombinasi kode.
Selain itu, pastikan aplikasi Anda dikompilasi sebagai 'Aplikasi Konsol'.
sumber
Environment.ExitCode
tidak menutup program dengan segera tetapiEnvironment.Exit
metode segera menutup programProcess
objek, Anda dapat meminta objek untukWaitForExit()
, dan kemudian meminta kode keluar dari itu.Jika Anda akan menggunakan metode yang disarankan oleh David, Anda juga harus melihat Atribut [Bendera].
Ini memungkinkan Anda untuk melakukan operasi sedikit bijak pada enum.
Kemudian
akan menjadi 16 + 32. :)
sumber
sumber
http://msdn.microsoft.com/en-us/library/system.environment.exitcode.aspx
sumber
Cukup kembalikan kode yang sesuai dari utama.
sumber
static void Main(string[] args);
Gunakan ExitCode jika utama Anda memiliki tanda tangan kembali kosong, jika tidak, Anda perlu "mengatur" dengan nilai yang Anda kembalikan.
Properti Environment.ExitCode
sumber
Sebagai pembaruan untuk jawaban Scott Munro :
Main
tidak berpengaruh.main
titik masuk dihormati.sumber
Main()
tidak mengaturProcess.ExitCode
seperti yang terlihat oleh aplikasi panggilan.int Main
masih dapat digunakan sebagai alternatif untuk Environment.ExitCode. tautanOpsi enumerasi sangat baik namun dapat ditingkatkan dengan mengalikan angka seperti pada:
Dalam kasus beberapa kesalahan, menambahkan nomor kesalahan spesifik bersama-sama akan memberi Anda nomor unik yang akan mewakili kombinasi kesalahan yang terdeteksi.
Misalnya, tingkat kesalahan 6 hanya bisa terdiri dari kesalahan 4 dan 2, 12 hanya bisa terdiri dari kesalahan 4 dan 8, 14 hanya bisa terdiri dari 2, 4 dan 8 dll.
sumber
2 sen saya:
Anda dapat menemukan kode kesalahan sistem di sini: https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx
Anda akan menemukan kode-kode khas seperti 2 untuk "file tidak ditemukan" atau 5 untuk "akses ditolak".
Dan ketika Anda menemukan kode yang tidak dikenal, Anda dapat menggunakan perintah ini untuk mencari tahu artinya:
misalnya
kembali
sumber
Gunakan kode ini
gunakan 0 sebagai int jika Anda tidak ingin mengembalikan apa pun.
sumber