我开始Scala了.我是否正确理解我应该将类定义为案例类,如果我想将它作为属性公开的参数?它不引入任何副作用吗?
在我的程序中,我想捕获所有异常并明确打印它们(以便能够在仍然看到异常的情况下最终继续).
所以我试过这个:
try {
...
}
catch {
case ex : Exception => {
println ("\n" + ex)
println ("\n" + ex.getStackTrace + "\n")
}
}
finally {
...
}
但是(使用getStackTrace)本身会导致"java.lang.OutOfMemoryError:PermGen space".我究竟做错了什么?我确信在获得此内容之前我有足够的免费JVM堆内存(因为我在程序的最开始尝试引发异常).
我相信我希望类的一些方法和属性是不可重写的,并在所有派生类中使用base的实现.怎么做到这一点?sealed关键字似乎不起作用,并说"方法不能被密封,因为它不是覆盖".
java.sql.SQLException提供一个int getErrorCode()函数,以便程序可以知道发生异常的原因.有机会获得MySQL的这些代码列表吗?
使用try-catch-finally构造来检索数据库记录,似乎我需要在一个try块内返回一个值,以防一切正常(如果异常情况下函数的结尾并不意味着到达) .但如果我回到里面try,是否finally会到达代码(关闭连接等)?
我正在使用SBT 0.11构建一个简单的Scala项目.
所有代码文件都在 ~/MyProject/src/main/scala/
~/MyProject/build.sbt 如下
name := "MyProject"
version := "1.0"
scalaVersion := "2.9.1"
libraryDependencies ++= Seq(
"mysql" % "mysql-connector-java" % "5.1.+",
"c3p0" % "c3p0" % "0.9.1.2",
"org.apache.commons" % "commons-lang3" % "3.0.1",
"commons-lang" % "commons-lang" % "2.6",
"javassist" % "javassist" % "3.12.1.GA"
)
Run Code Online (Sandbox Code Playgroud)
~/MyProject/project/Build.scala 如下
import sbt._
object MyProjectBuild extends Build {
lazy val MyProject = Project("MyProject", file("."))
}
Run Code Online (Sandbox Code Playgroud)
这似乎工作得很好.该项目确实编译并运行.项目名称设置正确(如果我不使用Build.scala,那么名称似乎看起来像"default - ????",尽管它在build.sbt中指定).
但问题是依赖似乎不起作用 - update命令不下载任何东西.如何解决这个问题?在这种情况下,我是否需要指定依赖项Build.scala而不是in build.sbt?
我认为这个问题与这个问题密切相关,但它已经关闭,解决方案对我来说似乎并不清楚.
我正在尝试使用VisualVM来配置我的控制台Scala应用程序.我这样做是通过启动VisualVM,启动我的Scala应用程序,在VisualVM中打开它的节点,转到"Profiler"选项卡并单击"CPU".按钮变为灰色一段时间(状态永远不会变为"分析非活动"),然后返回活动状态,但不显示任何分析数据.
该应用程序执行一些文件读取,数据处理(大约需要一分钟),stdout数据输出和退出.我还尝试添加Thread.sleep(60000)到程序的开头和结尾,以确保有足够的时间让VisualVM捕获它并完成工作,但没有任何改变.
与我链接到的相关问题不同,我没有从Eclipse或其他任何东西启动我的应用程序 - 我使用以下命令行启动它:
java -classpath myapp.jar:lib/* MyApp.Main
Run Code Online (Sandbox Code Playgroud)
所有库(包括scala-library.jar)都放入了lib/.该应用程序按预期工作.
更新:
AttachNotSupportedException.使用的软件版本:
有时我认为我想开发一个独立的(既不需要Web服务器也不需要运行浏览器)Windows,Mac OS X和Linux的桌面GUI应用程序,使用HTML5,CSS和JavaScript来构建GUI.
但据我所知,Adobe AIR和Mozilla Prism都被弃用了.这项任务有哪些其他选择?
更新:回应已经得到的答案和评论,我想强调的是,应用程序必须在Windows,Mac OS X和Linux上运行,无需任何重大修改.该平台将为所有3个主要PC操作系统积极开发和支持.单平台应用程序不是一种选择,也不是其中一种应用程序支持有限的应用程序.
为了实现更严格的类型安全性并使其更容易检测错误,我想明确指定我的视图的列类型.
但是这虽然有效:
CREATE VIEW [dbo].[myview] (
[a],
[b],
[c]
)
AS
SELECT 'a1', 'b1', 'c1';
Run Code Online (Sandbox Code Playgroud)
这失败了:
CREATE VIEW [dbo].[myview] (
[a] nvarchar(32) NOT NULL,
[b] nvarchar(32) NOT NULL,
[c] nvarchar(32) NOT NULL
)
AS
SELECT 'a1', 'b1', 'c1';
Run Code Online (Sandbox Code Playgroud)
这有正确的语法吗?